0

我有一个简单的 php 邮件脚本,它具有客户端验证(基于 jquery),工作正常。但有时有人直接发帖,我收到了很多空的垃圾邮件。

如果某些字段不为空(空),我如何检查。例如,“usermail”变量。

<?php
$sendto   = "youremail@youremail.com";
$usermail = $_POST['email'];
$content  = nl2br($_POST['msg']);

$subject  = "New Feedback Message";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New User Feedback</h2>\r\n";
$msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";


if(@mail($sendto, $subject, $msg, $headers)) {
    echo "true";
} else {
    echo "false";
}

?>

这不起作用:

<?php
if(!empty($usermail)) {
$sendto   = "mymail@mail.com";
$usermail = $_POST['email'];
$content  = nl2br($_POST['msg']);

$subject  = "New Feedback Message";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New User Feedback</h2>\r\n";
$msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";


if(@mail($sendto, $subject, $msg, $headers)) {
        echo "true";
} else {
        echo "false";
}
}
?>
4

3 回答 3

0

好吧,你可以使用函数empty()

if (empty($_POST['email']) || empty($_POST['msg'])) {
    exit();
}

更好的方法是进行适当的电子邮件验证和消息验证。例如:

  • 消息必须超过一定长度(例如:必须大于 10 个字符)
  • 必须提供有效格式的电子邮件(例如:最简单但不太准确的检查方法是检查是否@存在。
于 2013-09-18T01:07:55.047 回答
0

使用!empty($usermail)$usermail !== '';。您还应该确保页面也是$_POST['submitName']如此。

于 2013-09-18T01:08:30.130 回答
0

您可以使用以下语法检查变量的值。

if ($a==null)
{
  exit(0)
}
于 2013-09-18T01:28:46.347 回答