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

时间:2015-09-02 16:03:35

标签: php syntax

我正在为我的注册表单进行所有检查,并在检查字段的长度是否大于数字时,它给了我一个错误。不确定这里有什么意外的。

问题可能是面对我的盯着看,但我现在无法弄明白。

这是我收到的错误:

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

这是我用来完成我想要做的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){

提前致谢。

2 个答案:

答案 0 :(得分:3)

以下几行:

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

无效。他们应该使用&gt; =。 e.g。

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

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

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

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

我不确定我是否看过任何C衍生语言!&lt;和!&gt;

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

你应该考虑编写一个验证器函数,分解那些令人讨厌的嵌套ifs,这些代码真的很难维护。

作为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');

答案 1 :(得分:0)

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

<>=