为什么我的 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 中的语法。 >
和 <
的唯一有效形式是:
>=
或 <=
我正在检查我的注册表单,在检查字段的长度是否不大于数字时,它给了我一个错误。不确定这里 '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 中的语法。 >
和 <
的唯一有效形式是:
>=
或 <=