在PHP中混淆电子邮件?

时间:2013-05-25 11:01:09

标签: php forms email

我正在尝试改进使用PHP通过电子邮件发送表单的方式。目前我的代码看起来像这样:

<?php
  //==== FORM DATA
  $name = $_REQUEST['cName'];
  $email = $_REQUEST['cEmail'];
  $message = $_REQUEST['cMessage'];

  //==== EMAIL DETAILS
  $to = "myemailaddress@test.com";
  $subject = "Web Query";
  $headers .= "From:".$email;
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

  //==== EMAIL CONTENT
  $content =
  "<b>From: </b>".$name."<br />".
  "<b>Email: </b>".$email."<br /><br />".
  "<b>Message: </b>".$message;

  //==== SEND EMAIL
  mail($to, $subject, $content, $headers);
?> 

在我这样做的过程中,我发现了一个潜在的缺陷。我输入'到'电子邮件地址,我担心这可能导致垃圾邮件(所有其他数据来自html表单提交,除了直接进入PHP的'to'地址)。什么是混淆该电子邮件地址的最简单方法,是否有必要这样做?

4 个答案:

答案 0 :(得分:3)

您的电子邮件地址已在PHP代码中设置,因此不会向客户端浏览器公开。

但是,您在电子邮件标题中使用了不受保护的表单数据(正如MMM所指出的那样),这是一个非常值得关注的问题,应该在将此代码生效之前解决。

答案 1 :(得分:2)

你应该在使用它们之前转义你的$ _REQUEST变量,例如使用mysql_real_escape_string你应该检查它们是否具有正确的值类型并使用filter_var使用自定义函数(有效的电子邮件?)来验证它们,例如My Common Sense提到: https://stackoverflow.com/a/16748986/753676

答案 2 :(得分:2)

$name = htmlspecialchars($_REQUEST['cName']);
$email = filter_var($_REQUEST['cEmail'], FILTER_VALIDATE_EMAIL);
$message = htmlspecialchars($_REQUEST['cMessage']);

答案 3 :(得分:0)

如果您希望避免邮件不被视为垃圾邮件,您应该尝试使用smtp身份验证发送邮件。为此您可以使用phpmailer