2016-12-24 39 views
1

目前我有一個表單我正在努力,我正在努力,所以電子郵件不會發布,除非它被首先驗證。我爲它的名字工作,但每當我嘗試做同樣的電子郵件時,它說'無效的電子郵件格式',不寫或發佈。PHP電子郵件表單驗證和寫入文件

這就是我的工作:

if (empty($_POST["name"])) { 
    $nameErr = "Name is required"; 
} else { 
    // check if name only contains letters and whitespace 
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
     $nameErr = "Please type a real name"; 
    }else{ 
     $name = test_input($_POST["name"]); 
     //Record to file 
     $myfile = fopen("names.txt", "a"); 
     $txt = $name . " ". $_SERVER["REMOTE_ADDR"] . "\r\n"; 
     fwrite($myfile, $txt); 
     fclose($myfile); 
    } 
} 

這是我不能讓工作:

if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
} else { 
    // check if e-mail address is well-formed 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $emailErr = "Invalid email format"; 
    }else{ 
     $email = test_input($_POST["email"]); 
    } 
} 

每當我這樣做的電子郵件它會導致「無效的電子郵件格式」,甚至當我檢查確認它是正確的,並且它與if語句上面定義的$ email變量一起工作時。

如果您發現任何錯誤或任何可以解決此問題的方法,我們將不勝感激。

+0

'$ email'分配後節省$電子郵件變量的值?我猜你應該在'filter_var('< - 。 – chris85

+0

)使用'$ _POST [「email」]'是的,$ email被分配給$ name = $ email = $ gender = $ comment = $ website =「 「;在文檔的開頭,對不起,忘了包括它 –

+0

我的意思是它被分配到後來的輸入值,例如'$ email = $ _POST [」email「];'? – chris85

回答

0

你檢查驗證,因此您的驗證之前保存的任何變量或使用該

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
    $emailErr = "Invalid email format"; 
} 
+0

非常感謝! !這樣做有很大的意義,並且一旦我做到了這一點,我就開始工作了。非常感謝! –

+0

所以你可以接受答案,以便其他人可以得到幫助 –