关于PHP mail()'问题'的查询

时间:2011-08-04 09:17:44

标签: php email

所以我最近为家庭成员小公司建立了一个基本网站。我收到了一份邮件表格,供查询等。

这是我使用的代码:

<?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邮件有关。但我想知道是否有人可以突出我可以带给她的公司的潜在问题?

非常感谢,

2 个答案:

答案 0 :(得分:1)

检查是否输入了姓名和电子邮件字段,然后继续使用邮件功能..这样可以减少收到空白的电子邮件。

<?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";
        }
    ?>

答案 1 :(得分:0)

实际上你没有检查是否有人填写表格为空,这就是为什么你会得到空白字段

<?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");
    }

    ?>