解析错误:语法错误,意外标记

问题描述 投票:0回答:4

我正在制作一个函数,检查注册过程中的某个用户名是否包含我不希望用户在用户名中包含的某些字符。它向用户回显他们可以使用哪些字符。

public function checkUsername($username){       
    if(!empty($username)){  
        $exceptions= "!@~`#$%^&*()+=/\,;:[]{  }|?,<>"
this is line 26 from the error ->if(strpos($username, $exceptions) !=== false ){
        //here it means that something was found
            echo "Cannot contain special characters except - and _ .";
            return false;
        }//since it returns false, nothing after this gets executed.
    if(strlen($username) < 6){
        echo "Username must be at least 6 characters long to register.";
        return false;
    }
    $stmt = $this->db->prepare("SELECT username FROM users WHERE BINARY username = ? ");
    $stmt->bindParam(1,$username);
    $stmt->execute();   
    if($stmt->rowCount() == 1){
        echo "Sorry username already exists";     
        return false;
    } else{
        return true;
      } 
    }
}//end of checkUsername

它给了我一个解析错误:语法错误,第 26 行出现意外的 T_IF。

php
4个回答
1
投票

通常这样的错误发生在上面一行,而不是实际的行号本身。

似乎您的

中没有结束分号
$exceptions= "!@~`#$%^&*()+=/\,;:[]{  }|?,<>"

将其替换为

$exceptions= "!@~`#$%^&*()+=/\,;:[]{  }|?,<>";

0
投票

!===
可能应该是
!==


0
投票

这里有很多东西坏了。

首先,strpos 匹配整个字符串,而不是任何包含的字符。 你想在这里使用 preg_match

其次,你的比较器应该是 !== false,而不是 !=== false,但是通过使用 preg_match,你就不需要它了。


0
投票

上一行少了一个分号

$exceptions= "!@~`#$%^&*()+=/\,;:[]{  }|?,<>";
© www.soinside.com 2019 - 2024. All rights reserved.