2011-09-06 34 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