为什么我的 not(!) 出乎意料?

Why is my not(!) unexpected?

我正在检查我的注册表单,在检查字段的长度是否不大于数字时,它给了我一个错误。不确定这里 'unexpected' 是什么。

问题可能就在眼前,但我现在想不通。

这是我收到的错误:

解析错误:语法错误,意外的“!”在 C:\users\user\xampp\htdocs\CompanyProject\Signup.php 第 15 行

这是我用来完成我想做的事情的 PHP 代码:

   if($password == $confirmpass){
            if(!empty($password) AND !empty($username) AND !empty($email)){
                if (strlen($username) >=3 && strlen(trim($username)) !== 0 && strlen($password) >=3 && strlen(trim($password)) !== 0 && strlen($email) >=3 && strlen(trim($email)) !== 0) {
                    if(strlen($username) !<13){
                        if(strlen($password) !<17){
                            $sql ="INSERT INTO users(user,pass,email) VALUES('".$username."','".md5($password)."','".$email."')";
                            mysql_query($sql);
                            header('Location: Login.php');
                        }else{

                            echo "Your password must be between 3 and 17 characters"
                        }

                    }else{
                        echo "Your username must be between 3 and 13 characters."
                    }

                }else{
                    echo "Each field needs atleast 3 characters.";
                }

            }else{
                echo "Please fill out the form.";
            }

        }else{
            echo ("Your passwords do not match");
        }
    }

这些行中出现错误:

if(strlen($username) !<13){
                    if(strlen($password) !<17){

提前致谢。

下面几行:

 if(strlen($username) !<13){
     if(strlen($password) !<17){

无效。他们应该使用>=。例如

 if(strlen($username) >= 13){
     if(strlen($password) >= 17){

即便如此,我很确定你想写

 if(strlen($username) <= 13){
     if(strlen($password) <= 17){

因为您的错误消息说明了您的用户名和密码的规则!

我不确定我是否见过任何 C 派生语言使用 !< 和 !>

附录:您还缺少对电子邮件长度的上限检查(维基百科页面 here 上有一个)。

您应该考虑编写一个验证器函数,分解那些很难维护的讨厌的嵌套 if。

作为 10 人的首发:

   if($password != $confirmpass){
        echo ("Your passwords do not match");
    return false;
   }

   // what about weird characters?
   if (empty($username) || strlen($username) < 3 || strlen($username) > 13) {
        echo "Your username must be between 3 and 13 characters.";
    return false;
   }


   // what about weird characters?
   if (empty($password) || strlen($password) < 3 || strlen($password) > 17) {
        echo "Your password must be between 3 and 17 characters.";
    return false;
   }


   // you'll want some kind of regex to validate that the email is well formed
   if (empty($email) || strlen($email) < 3 || strlen($email) > 254) {
        echo "Your email must be between 3 and 254 characters.";
    return false;
   }

   $sql ="INSERT INTO users(user,pass,email) VALUES('".$username."','".md5($password)."','".$email."')";
   mysql_query($sql);
   header('Location: Login.php');

您的语法不正确,您试图否定比较运算符,但这不是 PHP 中的语法。 >< 的唯一有效形式是:

>=<=