在PHP中混淆电子邮件?

在PHP中混淆电子邮件?,php,forms,email,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";

我正在尝试改进使用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);
?> 

我发现我做这件事的方式有一个潜在的缺陷。我输入了“收件人”电子邮件地址,我担心这可能会导致垃圾邮件。除了直接输入PHP的“收件人”地址之外,所有其他数据都来自html表单提交。混淆该电子邮件地址的最简单方法是什么?是否有必要这样做?

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


但是,正如MMM所指出的,您在电子邮件标题中使用了未受保护的表单数据,这是一个更大的问题,应该在激活此代码之前解决。

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


但是,正如MMM所指出的,您在电子邮件标题中使用了未受保护的表单数据,这是一个更大的问题,应该在使用此代码之前解决。

您应该先转义$\u请求变量,然后再使用它们,例如mysql\u real\u escape\u字符串,您应该检查,如果它们具有正确的值类型,并使用自定义函数验证它们是否有效?使用filter_var,就像我提到的常识一样:

在使用$\u请求变量之前,您应该先对其进行转义,例如与mysql\u real\u escape\u字符串一起使用,您应该检查它们是否具有正确的值类型,并使用自定义函数验证它们有效的电子邮件?使用filter_var,就像我提到的常识一样:

如果您希望避免邮件被视为垃圾邮件,您应该尝试使用smtp身份验证发送邮件。为此,您可以使用如果您希望避免邮件被视为垃圾邮件,您应该尝试使用smtp身份验证发送邮件。为此,您可以使用-1-他不安全!他正在使用$\u请求并将其直接嵌入头中!允许收割台注射。使用no-reply@... 这永远不是一个好的选择,也不是一个好的选择userfriendly@Cube32:您声明他的代码是安全的,这是错误的,无论您是否试图回答他的问题。@MMM我试图通过更改代码来反映您的评论answer@Cube32谢谢你的帮助。所以我猜我唯一需要保护的领域是“从电子邮件”吗?最好的办法是什么?-1-他不安全!他正在使用$\u请求并将其直接嵌入头中!允许收割台注射。使用no-reply@... 这永远不是一个好的选择,也不是一个好的选择userfriendly@Cube32:您声明他的代码是安全的,这是错误的,无论您是否试图回答他的问题。@MMM我试图通过更改代码来反映您的评论answer@Cube32谢谢你的帮助。所以我猜我唯一需要保护的领域是“从电子邮件”吗?最好的方法是什么?这里的Obfuscate是一个错误的词-你想转义你的字符串。这里的Obfuscate是一个错误的词-你想转义你的字符串。这并不能解决垃圾邮件过滤器的问题,有很多因素可能会提醒垃圾邮件过滤器,如内容、图像URL、,主题线和很多more@DanielRufRuf..到目前为止,如果一切正常,smtp身份验证将起作用,您将在收件箱中收到邮件。但是,如果您的内容可疑,并且邮件服务器中存在复杂的垃圾邮件保护,则即使您通过受信任的邮件发送,您也无法在收件箱中收到邮件。我使用的smtp身份验证到目前为止未发现任何问题..那么您有幸运的是,如果您使用图像URL,并且有时需要附加和包含图像,以避免客户端将其标记为垃圾邮件或阻止邮件,则某些邮件客户端和服务器不喜欢它images@DanielRuf我不知道到目前为止,我在100个网站上使用过,我可能运气不错:…如果你不使用带有附件的html电子邮件-这并不能解决垃圾邮件过滤器的问题,有许多因素可能会提醒垃圾邮件过滤器,如内容、图像URL、,主题线和很多more@DanielRufRuf..到目前为止,如果一切正常,smtp身份验证将起作用,您将在收件箱中收到邮件。但是,如果您的内容可疑,并且邮件服务器中存在复杂的垃圾邮件保护,则即使您通过受信任的邮件发送,您也无法在收件箱中收到邮件。我使用的smtp身份验证到目前为止未发现任何问题..那么您有幸运的是,如果您使用图像URL,并且有时需要附加和包含图像,以避免客户端将其标记为垃圾邮件或阻止邮件,则某些邮件客户端和服务器不喜欢它images@DanielRuf我不知道到目前为止,我在100个网站上使用过,我可能运气不错:…如果你不使用带有附件的html电子邮件-定义逃逸?否则这个答案毫无帮助谢谢我会调查的。我的头受伤了。我对PHP和mysql的了解非常有限。mysql\u real\u escape\u string?无论是谁对这个答案投了赞成票,我都希望看到使用mysql\u real\u escape或其他解决方案进行转义的原因,并使用验证功能进行转义?否则这个答案毫无帮助谢谢我会调查的。我的头受伤了。我的知识
PHP和mysql的边缘真的很薄。mysql\u real\u escape\u string?无论是谁对这个答案投了赞成票,我都希望看到使用mysql\u real\u escape或其他解决方案以及使用验证功能进行转义的原因。应该使用这种方法,Thank=几乎忘记了这些小助手,因为我主要使用的是框架,这些框架自动完成了所有这些验证任务,比重新发明轮子和不使用ZF这样的框架要好:我尝试使用htmlspecialchars,但它只是中断了过程,不再发送电子邮件……之后$message的结果/内容是什么这个?应该用这个,Thank=几乎忘记了这些小助手,因为我主要使用的是框架,这些框架自动完成了所有这些验证任务,比重新发明轮子和不使用ZF这样的框架要好:我尝试使用htmlspecialchars,但它只是中断了过程,不再发送电子邮件……之后$message的结果/内容是什么这
$name = htmlspecialchars($_REQUEST['cName']);
$email = filter_var($_REQUEST['cEmail'], FILTER_VALIDATE_EMAIL);
$message = htmlspecialchars($_REQUEST['cMessage']);