我正在尝试改进使用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'地址)。什么是混淆该电子邮件地址的最简单方法,是否有必要这样做?
答案 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