2011-09-06 36 views
0
if(empty($_POST['inputEmail'])) {  

    function valid_mail($str) { 
    return filter_var($str, FILTER_VALIDATE_EMAIL) ? $str : false; 
} 

echo 'Please enter a valid email address' . "<br />"; 

    } 
+0

你可以發佈你的代碼的其餘部分請。 – Bruce

+0

考慮讓JavaScript /客戶端驗證 –

+0

@Haim Evgi - 只是一個加法,而不是獨立! –

回答

2
if(isset($_POST['submit'])) { 
    if(empty($_POST['inputEmail']) || false === filter_var($_POST['inputEmail'], FILTER_VALIDATE_EMAIL)) { 
     echo 'Please enter an email address' . "<br />"; 
    } 
    elseif(empty($_POST['inputPostcode'])) { 
     echo 'Please enter postcode' . "<br />"; 
    } 
    else { 
     // save to db here (no errors occured) 
     // return; (or redirect, or whatever) 
    } 
} 

// display form here 

您也可以使用required -attribute所需表單字段。您也可以使用HTML5-input-types,如<input type="mail" />進行客戶端檢查。這兩種方法都可以被「黑客攻擊」,但是阻止「正常」用戶發送未正確填寫的表單。使用PHP的filter_var-功能來驗證服務器上的郵件地址。

+0

真棒謝謝feeela! – user921334

1

使用臨時變量:

$ VALIDATION_ERROR = FALSE;

if($_POST['inputEmail'] == ''){ 
    echo 'Please enter an email address' . "<br />"; 
    $validation_error = true; 
} 

if($_POST['inputPostcode'] == '') 
    echo 'Please enter postcode' . "<br />"; 
    $validation_error = true; 
} 

// no error occured 
if(!validation_error){ 
    //do stuff 
} 
0

更好的郵件驗證功能可能是:

/** 
* Return the mail address if it's valid or false otherwise 
*/ 
function valid_mail($str) { 
    $mail_regexp = '/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/'; 
    preg_match($mail_regexp, $str, $matches); 
return strcmp($str, $matches[0]) ? false : $str; 
} 

或使用PHP filter_var(感謝@feela)

function valid_mail($str) { 
    return filter_var($str, FILTER_VALIDATE_EMAIL) ? $str : false; 
} 
+0

這個正則表達式只能匹配ASCII碼中的電子郵件地址,那麼IDN呢?見:http://stackoverflow.com/questions/3613589/php-email-validation – feeela

+0

jbrond感謝您的幫助到目前爲止。我不確定在哪裏添加電子郵件驗證功能。我在哪裏包括它?我有上面的更新代碼。 – user921334

+0

@ user921334我已更新我的答案,以包含有效性檢查。請回復您的問題 - 編輯,因爲您的問題不再可用。這很令人困惑,因爲答案並不真正符合新的問題。只需附加更新的代碼,而不是替換它... – feeela