PHP - strlen 不起作用

3
在 Register.php 文件中,包含一个表单。
<html>
<body>

<form action="Insert.php" method="post">
Email: <input type="text" name="email" /><br/>
Username: <input type="text" name="username" /><br/>
<input type="submit" name="Send Registration" value="Send Registration"/>
</form>

</body>
</html>

在Insert.php中,它包含一些进行验证的代码。
<?php

if(!filter_var($_POST[email], FILTER_VALIDATE_EMAIL))
{
  exit("E-mail is not valid");
}
else
{
  if(!strlen($_POST[username])>=6)
  {
    exit("Username should be at least 6 characters");
  }
  else
  {
    // Continue other validations
  }
}

?>

当我输入一个无效的电子邮件地址并点击“发送注册”时,它会显示错误消息“电子邮件无效”。所以,我尝试输入有效的电子邮件地址,在用户名字段中输入5个或更少的字符,然后点击“发送注册”。但是它没有显示错误消息。
请问我的代码有什么问题吗? 对不起,我是编程和php的初学者。 提前感谢!
3个回答

3

你的逻辑是错误的:

if(!strlen($_POST[username])>=6)

替换为:*注意变量中的 ' 字符(否定符号“!”被替换为小于号,双重否定。如果你需要查看大量代码,这样更容易理解,否则你可能会错过“!”)

if (strlen($_POST['username'])<6)

希望这有所帮助。

还有一些你可能需要考虑的事情: 摆脱"insert.php",将该代码放入与表单相同的页面中。你可以这样做:

表单:<form method="post" action="'.$self.'">

(放在PHP括号内的顶部)

$self   = $_SERVER['PHP_SELF'];
$username   = $_GET['username'];
$email     = $_GET['email'];

这取决于你希望如何设置,可以使用POST或GET方法,我不能告诉你该使用哪种方法。

从这里开始,你可以操作你的变量和其他内容。


2

试试这个:

<?php

if(!filter_var($_POST[email], FILTER_VALIDATE_EMAIL))
{
  exit("E-mail is not valid");
}
else
{
  $len = strlen($_POST["username"]);
  if($len<=5) {
  {
    exit("Username should be at least 6 characters");
  }
  else
  {
    // Continue other validations
  }
}

?>

2

如果您需要检查5个或更少的字符:


if(strlen($_POST["username"])<=5) {
  //显示错误
}



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接