2011-10-19 32 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