PHP“联系”表单,电子邮件地址免受垃圾邮件侵害?

时间:2013-01-17 02:55:27

标签: php forms email spam

所以我在线获得了“联系我们”表单的PHP代码(我自己不编写PHP代码),但它包含我的电子邮件地址。以下表单是否可以使我的电子邮件免受垃圾邮件发送者的侵害?

contact.php文件(真实电子邮件已被MYEMAIL@COMPANY.COM取代):

<?php
// Contact Form 

// Get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "MYEMAIL@COMPANY.COM";
$Subject = "A User Has Contacted You";
$Name = Trim(stripslashes($_POST['Name'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// Validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Name)=="") $validationOK=false;
if (Trim($Message)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// Prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

// Send E-Mail 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// Redirect to Success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=success.htm\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

html片段:

<form method="POST" action="contact.php">

...

</form> 

我已经读过PHP中包含的电子邮件地址对于爬虫是完全安全的,因为它是所有服务器端(假设您的服务器/站点是安全的)。不确定这是不是真的,那里有太多的信息我在网上搜索后找不到明确的答案。如果有人可以确认这个代码是否可以安全使用,那就太好了,谢谢!

4 个答案:

答案 0 :(得分:1)

除非他们有权访问该文件并阅读,否则你没事。他们无法得到它。像你说的那样,这都是服务器端。

答案 1 :(得分:1)

地址是安全的,除非文件以纯文本形式提供并且可读(如Sean所说),但你应该阅读email injection attacks,因为你很容易受到这些攻击。< / p>

答案 2 :(得分:1)

您的电子邮件受到保护,因为它是所有服务器端,除非他有fpt访问您的网站或您有某种类型的漏洞。

此外,您可能需要考虑这样的事情以防止洪水泛滥。

    session_start()

    define('TIME_INTERVAL', 120);

    if(isset($_SESSION['ip']) && (time() - $_SESSION['last_post']) < TIME_INTERVAL) 
    }
       die('stop spamming !');
    {

    $_SESSION['last_post'] = time();
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

另外,关于您的电子邮件验证,您可能需要查看一下,这也会验证电子邮件的域名,看它是否是现有的电子邮件服务器。

function validate_mail($email)
{
 if (filter_var($email, FILTER_VALIDATE_EMAIL)) 
 {
    list($username,$domain)=split('@',$email);
    if(checkdnsrr($domain,'MX')) 
    {
      return true;
    } 
 }
 return false;
}

答案 3 :(得分:0)

简单回答,你很安全。因为PHP元素只会在服务器上处理,所以任何人都无法看到您的电子邮件地址。