2015-06-28 126 views
0

我有一個PHP表單來獲取用戶的姓名和電子郵件。 對於電子郵件字段,我想驗證該字段已填寫且電子郵件地址有效。 我正在使用下面的代碼使用filter_var驗證電子郵件PHP

驗證電子郵件字段是否填寫有效,但不是電子郵件驗證。

<tr> 
<td align="right"> 
Email: 
</td><td align="left"> 
<input type="text" size="25" name="email" value="<? echo $_GET['email']; ? >"/"> 

<? 
#checking if email exists 
if ($error_code && !($_GET['email'])) { 
echo "<b>Please include your email address.</b>"; 
} 

# validating email 
if (!filter_var(($_GET['email']), FILTER_VALIDATE_EMAIL) === true) { 
echo "<b>This is not a valid email address.</b>"; 
} 

?> 

消息「這不是一個有效的電子郵件地址」,即使進入一個電子郵件地址之前出現,而它並沒有顯示正確的消息的情況下,我輸入了錯誤的電子郵件地址,並提交表單。 什麼是錯誤的,爲什麼在提交值之前驗證電子郵件錯誤?

+0

支票形式 – 2015-06-28 00:24:06

回答

0

試試這個

if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) { 
    echo "<b>This is not a valid email address.</b>"; 
} 

看到您發佈的形式之前的結果的原因是因爲你如果$_GET陣列已經做你的驗證之前已設置不檢查。

所以你可以做這樣的事情..

if(isset($_GET['email'])){ 
    if ($error_code && empty($_GET['email'])) { 
     echo "<b>Please include your email address.</b>"; 
    } 

    if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) { 
     echo "<b>This is not a valid email address.</b>"; 
    } 
} 
0

考慮測試isset($_GET['email'])包裝所有的驗證。另外,如果這些數據來自表單,請檢查您的方法是否真的是GET,否則您需要使用$_POST檢查參數。

0

試試這個,並請讓我知道,如果這有助於郵件檢查之前發佈

<? 
#checking if email exists 
if ($error_code && !($_GET['email'])) { 
echo "<b>Please include your email address.</b>"; 
} 

//# validating email 
if (!filter_var($_GET['email'], FILTER_VALIDATE_EMAIL)) { 
echo "<b>This is not a valid email address.</b>"; 
} 

?>