【问题标题】:PHP Mail - Sanitizing and Validating for Basic FormPHP Mail - 基本表单的清理和验证
【发布时间】:2015-09-30 09:19:18
【问题描述】:

我正在寻找最安全和最有效的方式来使用 php 邮件作为基本表单。

我有下面的代码,它似乎工作得很好,但我对 php 很陌生,如果有更好的方法来执行它,我想输入一下。我应该做更多的事情来帮助防止注射吗?还是我什至需要担心纯文本电子邮件?

现在我正在清理电子邮件字段。我应该对所有字段进行消毒吗?我也想出了如何验证电子邮件,但问题是我不喜欢如果一个合法用户写了一个超长的消息并且不小心在他的电子邮件中输入了一个错误,那么 php 给出了一个无效的电子邮件错误和擦除整个消息。我宁愿只是对其进行消毒,消息仍然会被发送。我确实有 Jquery 验证,所以这也有帮助。

我愿意接受有关如何改进此表单的任何建议,或者如果您发现我做错了什么,请告诉我!谢谢。

<?php
if (isset($_POST['submit'])) {


$send_to = "receiver@domain.com";
$subject = "Contact Page Form";
$headers = 
'From: "Sender Name" <sender@domain.com>' . "\r\n" .
'Reply-To: ' . $_POST['name'] . '<' . $_POST['email'] . '>' . "\r\n" .
'Content-type: text/plain; charset=iso-8859-1';
'X-Mailer: PHP/' . phpversion();
$success = "<p class=\"formsuccess\">Thank you. We received your message!</p>";


$name = $_POST['name'];
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$phone = $_POST['phone'];
$message = $_POST['message'];

$content = "
Name: $name
Email: $email
Phone: $phone

Message: $message
";

mail($send_to,$subject,$content,$headers);
echo $success;

} else {
?>
<form id="contactform" method="post">

NAME: <input type="text" name="name" required>
EMAIL: <input type="email" name="email" required>
PHONE: <input type="tel" name="phone" required>
MESSAGE:<textarea name="message" required></textarea>

<button type="submit" name="submit">Submit</button>

</form>
<script>
$("#contactform").validate();
</script>
<?php } ?>

【问题讨论】:

    标签: php email phpmailer email-validation email-headers


    【解决方案1】:

    如果服务器端验证失败,您只需使用提交的值重新填充表单:

    NAME: <input type="text" name="name" value="<?php echo $name; ?>" required>
    

    在提交检查之前将变量设置为默认值以避免“未定义变量”错误。

    接下来,如果您担心有效性,您应该避免直接调用mail() - 您的脚本目前很容易受到标头注入攻击和各种损坏。使用像 PHPMailer 之类的库(您已经用它标记了问题)正确地执行此操作,并按照为处理表单提供的示例进行操作。

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 2014-10-30
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2011-03-29
      • 2021-01-28
      相关资源
      最近更新 更多