我正在尝试检查用户在注册表单中输入的密码长度。 但是我得到了一个意想不到的输出。这是我的剧本。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(strlen(trim($password)) > 8)
{
echo"Password must be 8characters";
}
}
?>
答案 0 :(得分:9)
您的代码失败,因为永远不会为变量$password
分配任何值。然后,您要检查密码是否更长超过8个字符 - 您使用的是大于号而不是小于号。由于变量$password
为空,因此检查长度大于8的值始终为false。
试试这个:
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.php strlen
- http://php.net/manual/en/function.strlen.php array_key_exists
- http://php.net/manual/en/function.array-key-exists.php 答案 1 :(得分:2)
也许您应该使用$_POST['password']
,使用自动全局变量是错误的(并且希望在许多主机上禁用)。
同样将密码限制为8个字符看起来是一个坏主意,你应该哈希它,然后长度无关紧要。