2011-10-19 43 views
0

我在我的網站上有註冊表單,需要在創建帳戶之前驗證輸入。我讀過,JavaScript驗證可以輕鬆禁用,所以我選擇了PHP。鏈接語句的PHP驗證表單問題

我有問題鏈接不同的驗證使用'和'不太清楚發生了什麼問題。

if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){ 
        // Return Error - Invalid Email 
        $msg = 'Please enter a valid email address.'; 
       } and (!preg_match("/\S+/", $firstname)){ 
     // Return Error - Firstname blank 
        $msg = 'Please enter your first name.'; 
    } and (!preg_match("/\S+/", $lastname)){ 
     // Return Error - Lastname blank 
        $msg = 'Please enter your last name.'; 
    }(!preg_match("/.{6,}/", $password)){ 
    // Return Error - password short 
        $msg = 'The password entered is too short. Please use 6 or more characters.'; 
    } 

       else{ //submit form 

有沒有什麼我從驗證中缺少一個更有經驗的編碼器會使用?

希望你能幫助像我這樣的新手...

+1

使用['filter_var($ VAR,FILTER_VALIDATE_EMAIL)'](HTTP: //php.net/filter_var)而不是你錯誤的正則表達式。 - 關於你的代碼:你應該閱讀PHP中的['if'](http://php.net/if)構造,但首先修復你的縮進。 – mario

回答

1

我沒有檢查你的正則表達式,但這裏是你的代碼的重新定義的版本:

$msg =""; 
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)){ 
    // Return Error - Invalid Email 
    $msg = 'Please enter a valid email address.'; 
}else if(!preg_match("/\S+/", $firstname)){ 
    // Return Error - Firstname blank 
    $msg = 'Please enter your first name.'; 
}else if(!preg_match("/\S+/", $lastname)){ 
    // Return Error - Lastname blank 
    $msg = 'Please enter your last name.'; 
}else if((!preg_match("/.{6,}/", $password))){ 
    // Return Error - password short 
    $msg = 'The password entered is too short. Please use 6 or more characters.'; 
}else if($msg == ""){ 

//Submit form 

這是一個非常簡單的做事的方式,但我建議下次參加一些驗證技巧註冊表的教程。
這裏有幾個很好的教程:
http://www.smashingmagazine.com/2009/07/07/web-form-validation-best-practices-and-tutorials/
視頻第1部分:
http://www.youtube.com/watch?v=t8ehovDeMuU
視頻第2部分:
http://www.youtube.com/watch?v=FlwlpRQo6II