2013-05-09 61 views
0

我試圖做一個無驗證的垃圾郵件阻止聯繫表格。從用戶的角度來看,它似乎正在工作,因爲點擊發送按鈕後出現謝謝頁面。聯繫表格爲空;聯繫表格回覆到錯誤的地址

問題#1:到達的電子郵件是空白的,不包含發送的消息的內容。在這裏找到一個類似的帖子,但提供的建議不適用:Contact form problem - I do receive messages, but no contents (blank page)

問題#2:回覆消息也顯示在同一個收件箱中,而不是發送到表單用戶的地址 - 當測試時,它是我自己的。

的HTML:

<form method="post" action="submit.php"> 
<p>Name:<br> 
<input type="text" name="Name" id="Name" /></p> 

<p>Phone:<br> 
<input type="text" name="Phone" id="Phone" /></p> 

<p>Email:<br> 
<input type="text" name="Email" id="Email" /></p> 

<p class="antispam">Leave this empty:<br /> 
<input name="url" /></p> 

<p style="color:#06C;">Forward to:<br> 
<input type="text" name="Forwardto" id="Forwardto" /></p> 

<p>Message:<br /> 
<textarea name="Message" rows="20" cols="20" id="Message"></textarea></p> 

<p><input type="submit" value="Send" class="submit-button" /></p> 
</form> 

的PHP(我的實際地址刪除):

<?php 

if(isset($_POST['url']) && $_POST['url'] == ''){ 

    $youremail = '[email protected]'; 

    $body = "This is the form that was just submitted: 
    Name: $_POST[name] 
    Phone: $_POST[phone] 
    E-Mail: $_POST[email] 
    Forward to: $_POST[forwardto] 
    Message: $_POST[message]"; 

    if($_POST['email'] && !preg_match("/[\r\n]/", $_POST['email'])) { 
     $headers = "From: $_POST[email]"; 
    } else { 
     $headers = "From: $youremail"; 
    } 

    mail($youremail, 'Contact Form', $body, $headers); 

} 

?> 

相關的CSS:

<style type="text/css"> 
.antispam { display:none;} 
</style> 

是在上面的代碼中的問題。 。 。或者可能會有其他事情發生?

+5

您是否嘗試過使用'$ _ POST [ '電子郵件']'而不是' $ _POST ['email']' - 大寫「E」? – Mateusz 2013-05-09 14:39:08

+0

你也應該打開錯誤報告,你會被告知php你使用的$ _POST索引是無效的 – 2013-05-09 14:48:19

+0

php數組鍵是區分大小寫的。所有的$ _POST鍵都必須與表單中'name'的外殼匹配。你正在提交'電子郵件','電話'等,但正試圖訪問'電子郵件','電話'等... – 2013-05-09 14:51:34

回答

0

您要訪問$_POST['email']而本場的名字是email(小「E」) - 嘗試使用$_POST['Email']代替

問題二 - mail()函數的第一個參數是到您希望它被髮送的電子郵件,即$_POST['Email']。現在你試圖將它發送到硬編碼的$youremail

+0

這不只是電子郵件變量是錯誤的。他們都會不當地套上。 – j08691 2013-05-09 14:42:08

+0

感謝大家的回覆。這些更正已經考慮到了這兩個問題。 – user2356283 2013-05-09 19:31:20

+0

如果我幫助過你,請接受我的回答並提出上傳。對於錯誤報告,請看[這裏](http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php)。 – Mateusz 2013-05-09 19:34:26

0

首先你需要關閉報價$ body =「這是剛剛提交的表格:; 我說要使用$ _REQUEST而不是$ _POST,因爲此變量是一個超全局數組,用於收集使用GET和POST方法發送的數據。 我已經嘗試這樣做,它的工作原理 如果(isset($ _ REQUEST [ '電子郵件'])) 輸入代碼here` {

 //Email information 
     $admin_email = "myemail.co.uk"; 
     $subject = "This is the form that was just submitted"; 
     $email = $_REQUEST['email']; 
     $comment = $_REQUEST['comment']; 
     $full_name = $_REQUEST['full_name']; 

     //send email 
     mail($admin_email, "$subject", "message:" . $comment, "From:" . $email,  `enter code here`enter code here`$full_name); 

     //Email response if needed 
     echo "Thank you for contacting us!"; 
     } 

     //if "email" variable is not filled out, display the form 
     else 
     { 
     enter code here`enter code here`?> 
     enter code here`<p>Email us at <i>website name.com</i></p> 
     enter code here`<?php 
     enter code here`} 
     enter code here`die(); 
     enter code here`?>