2011-09-14 18 views
0

如果輸入了正確的電子郵件地址,但它不會將結果發送到指定的$to地址,那麼以下表單會顯示消息「感謝您訂閱電子報」。另外,如果電子郵件無效,則「請輸入有效的電子郵件」消息不會顯示。有人可以幫助一個PHP的noob與這些錯誤?謝謝PHP郵件/驗證腳本不起作用

<?php 
$email = $_POST['email']; 
$to  = "[email protected]"; 
$subject = "ADD THIS EMAIL ADDRESS TO THE MAILING LIST"; 
$body = "\n\n"; 
$url  = 'http://10.0.1.3/~143b1'; 

if (! filter_var($email, FILTER_VALIDATE_EMAIL)) 
{ 
    echo '<script> alert("PLEASE ENTER A VALID EMAIL ADDRESS") </script>'; 
    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'; 
} 
else 
{ 
    if (mail($to, $subject, $body)) 
    { 
     echo '<script> alert("THANK YOU FOR SUBSCRIBING TO THE NEWSLETTER") </script>'; 
     echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'; 
    } 
    else 
    { 
     echo '<script> alert("THERE WAS AN UNEXPECTED ERROR. PLEASE TRY AGAIN LATER") </script>'; 
     echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">'; 
    } 
} 
?> 
+0

是你的用戶嗎? – tripleee

回答

0

您是否在本地服務器上開發? sendmail還是安裝了某種SMTP服務?

您還沒有列出可能導致某些瀏覽器不執行Javascript的腳本標記的腳本類型。當您運行PHP時,實際得到的迴應是什麼?這應該給你一個問題在哪裏的跡象。

1

摘自mail()手冊頁:如果郵件被成功接受交付,否則返回FALSE

返回TRUE。

重要的是要注意,僅僅因爲郵件被接受交付,這並不意味着郵件實際上會到達預定目的地

所以我想你的代碼很好,但是你的郵件服務器有問題。

0

你應該補充身體結束標記之前的代碼中,DOM應先加載到執行你的js代碼 或者嘗試

if(1==1){ 
    echo "<script>alert('Test');</script>"; 
} 

如果警報不工作的問題是你的代碼的位置