我正在尝试检查用户在注册表单中输入的密码长度。但我得到了一个意外的输出。这是我的脚本。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(strlen(trim($password)) > 8)
{
echo"Password must be 8characters";
}
}
?>
我正在尝试检查用户在注册表单中输入的密码长度。但我得到了一个意外的输出。这是我的脚本。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(strlen(trim($password)) > 8)
{
echo"Password must be 8characters";
}
}
?>
您的代码失败,因为该变量$password
从未被分配任何值。然后,您将检查密码是否超过8 个字符——您使用的是大于号而不是小于号。由于变量$password
为空,因此长度大于 8 的检查始终为假。
尝试这个:
if(!array_key_exists('password', $_POST))
die('no password specified');
$password = trim($_POST['password']); // <--- this is not a good idea!
if(strlen($password) < 8)
die('Password must be at least 8 characters');
回顾一下,意外的输出是由两个因素造成的:
die
您当然应该在生产代码中做一些比 , 更用户友好的事情。
文档
$_POST
- http://php.net/manual/en/reserved.variables.post.phpstrlen
- http://php.net/manual/en/function.strlen.phparray_key_exists
- http://php.net/manual/en/function.array-key-exists.php也许您应该使用$_POST['password']
,使用自动全局变量是错误的(希望在许多主机上禁用)。
同样将密码限制为 8 个字符似乎是个坏主意,无论如何您都应该对其进行散列,然后长度无关紧要。