запросы относительно PHP mail () - PullRequest
0 голосов
/ 04 августа 2011

Итак, я недавно сделал базовый сайт для членов семьи небольшой компании. Я включил почтовую форму, для запросов и т. Д.

вот код, который я использую:

<?php

function check_input($data){            // SANITIZE USER STRING INPUT
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

$name = check_input($_POST['name']);
$surname = check_input($_POST['surname']);
$email = check_input($_POST['email']);
$telephone = check_input($_POST['telephone']);
$comments = check_input($_POST['message']);


$message = "From: $name $surname
Email: $email
Telephone: $telephone
--------------------------------------------------------------
Comments: $comments
";

mail("#######@#####.com","Website Enquiry from www.#######.co.uk",$message,"From: webserver");

?>

Теперь, когда я пытаюсь это сделать, все работает отлично. Однако я заметил, что иногда это происходит очень медленно, и поэтому мы получаем пустые электронные письма через форму (вводимые пользователем данные отсутствуют), поэтому кажется, что кто-то пытался их использовать и отказался, возможно, потому что это занимает слишком много времени?

Я предполагаю, что это связано с почтовым сервером, а не с php mail. Но я хотел посмотреть, сможет ли кто-нибудь осветить потенциальные проблемы, которые я мог бы отнести к компании, которая ее устраивает?

большое спасибо,

Ответы [ 2 ]

1 голос
/ 04 августа 2011

проверьте, введены ли поля имени и адреса электронной почты, а затем перейдите к функции почты. Это сокращает получение пустых писем.

<?php


    if (isset($_POST['name']) && isset($_POST['email']))   //check if name and email fields are entered and then proceed with mail function
    {
        //process the data and send mail.
    }
    else
    {
    echo "Error missing name or email field.please enter";
    }
?>

В качестве альтернативы вы также можете использовать array_key_exists()

<?php


       if (array_key_exists("name", $_POST) && $_POST["name"] != "" && array_key_exists("email", $_POST) && $_POST["email"] != "")
//check if name and email fields are entered and then proceed with mail function
        {
            //process the data and send mail.
        }
        else
        {
        echo "Error missing name or email field.please enter";
        }
    ?>
0 голосов
/ 04 августа 2011

На самом деле вы не проверяете, заполняет ли кто-то форму пусто, поэтому вы получаете пустые поля

<?php

    function check_input($data){            // SANITIZE USER STRING INPUT
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    if(!empty($data))
    {
      $name = check_input($_POST['name']); 
      $surname = check_input($_POST['surname']);
      $email = check_input($_POST['email']);
      $telephone = check_input($_POST['telephone']);
      $comments = check_input($_POST['message']);


      $message = "From: $name $surname
      Email: $email
      Telephone: $telephone
      --------------------------------------------------------------
      Comments: $comments
      ";

      mail("#######@#####.com","Website Enquiry from www.#######.co.uk",$message,"From:  webserver");
    }

    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...