php中的注册表检查顺序?

php中的注册表检查顺序?,php,html,regex,Php,Html,Regex,我的注册表有问题,我正在检查密码和用户名,这是我做这件事的过程吗 php: $username=mysql\u real\u escape\u字符串($\u POST['username']); $password=md5(mysql\u real\u escape\u字符串($\u POST['pass']); //检查用户名是否有效 如果(ereg(“^[a-zA-Z0-9_\-]+$”,$username)){ die(消息(0,“哦,这个用户名无效,只允许数字、字母和下划线”); } /

我的注册表有问题,我正在检查密码和用户名,这是我做这件事的过程吗

php:

$username=mysql\u real\u escape\u字符串($\u POST['username']);
$password=md5(mysql\u real\u escape\u字符串($\u POST['pass']);
//检查用户名是否有效
如果(ereg(“^[a-zA-Z0-9_\-]+$”,$username)){
die(消息(0,“哦,这个用户名无效,只允许数字、字母和下划线”);
}
//检查密码是否大于6
if(strlen($password)<6){
die(msg(0,“哎呀,密码必须超过6个字符,小心点!”);
}

但是我输入了正确的用户密码,但仍然显示了错误,检查是否有问题:)谢谢

在通过mysql\u real\u escape\u string()传递$username后检查其有效性没有意义,因为该函数将转义某些字符,结果“username”将包含“\”个字符,因此始终无法通过regexp

(另外,您似乎正在检查用户名,如果用户名有效,则会死掉()。您确定代码就是这样编写的吗?)

同样,在通过md5()后检查$password的长度也没有任何意义。md5()会将任何内容转换为32个字符的字符串,因此该条件将始终失败

附言

//检查密码是否大于6

if(strlen($password)<6){


如果你要对代码进行过多的注释,至少要确保注释是准确的!;-)

无论密码有多长,哈希长度都是相同的。此外,你应该使用a。你也不应该使用
ereg
那些函数是不推荐使用的。而应该使用
preg
。所以基本上我应该在使用mysql之前检查一下escape和md5!!对于用户名检查,我只想只允许0-9a-z,我该如何更改itP.S.注意“if(ereg(^[a-zA-Z0-9_ \-]+$,$username)){die();}”实际上意味着“如果用户名只包含基本字符,则因为无效而死亡”-我不认为这是您想要的,只要颠倒逻辑:if(ereg)(“^[a-zA-Z0-9_-]+$”,$username)==FALSE{die();}你能帮我换一下吗,我对这个东西太笨了@bobby,谢谢
$username = mysql_real_escape_string($_POST['username']);
 $password = md5(mysql_real_escape_string($_POST['pass']));


    //check if username is valid
        if (ereg("^[a-zA-Z0-9_\-]+$", $username)){

             die(msg(0,"oOps, This username is not valid, only numbers, letters and underscores allowed"));

        }

        // check if password is more than 6

    if(strlen($password) < 6){

       die(msg(0,"oOps, The password has to be more than 6 characters, be tricky!"));
    }