2013-01-17 132 views
1

因此,我在網上獲得了一個「聯繫我們」的PHP代碼(我自己不編碼PHP),但它包含了我的電子郵件地址。下列表格是否可以使我的電子郵件免受垃圾郵件製造者的侵害?PHP的「聯繫」表格,電子郵件地址從垃圾郵件安全嗎?

contact.php文件(真實的電子郵件已被替換[email protected]):

<?php 
// Contact Form 

// Get posted data into local variables 
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "[email protected]"; 
$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

這是真的 - 只要你的服務器被正確配置爲執行PHP,你的地址是安全的。這並不意味着垃圾郵件發送者不能僅僅填寫表單來垃圾郵件,儘管他們會這樣做,而且這就是生活中的一種聯繫方式,除非您像填寫算術問題,驗證碼或越來越多的非用戶友好的東西。 –

+1

看起來像是誰寫的它不會自己寫太多的PHP代碼:P – alex

+0

亞歷克斯,那個評論讓我難過,認爲我選擇了錯誤的表單模板:(大聲笑... – user1985740

回答

1

除非他們有權訪問該文件並閱讀該文件,否則沒關係。他們無法得到它。這就像你說的那樣,都是服務器端。

1

地址是安全的,除非文件被認爲是純文本並且可讀(如肖恩說的),但您應該閱讀email injection attacks,因爲您很容易受到這些影響。

1

您的電子郵件是受保護的,因爲它是所有的服務器端,除非例如他有訪問您的網站的權限或者您有某種類型的漏洞。

另外你可能想要考慮這樣的事情來防止洪水。

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; 
} 
+0

哇,感謝這看起來不錯,我假設都進入contact.php文件,但不知道在哪裏。在任何地方工作?看起來我需要開始越來越熟悉JavaScript/PHP ..我可以瞭解代碼:) – user1985740

+0

是的在你的contact.php中添加它們並使用像$ validationOK = validate_mail($ email); //它將分配true或false; – Syd

+0

以及關於洪水腳本在執行任何事情之前將其添加到您的php文件的頂部。 – Syd

0

簡單的回答,你很安全。由於PHP元素只能在服務器上處理,因此任何人都無法看到您的電子郵件地址。

相關問題