-5

我正在尝试检查用户在注册表单中输入的密码长度。但我得到了一个意外的输出。这是我的脚本。

 <?php
 if($_SERVER['REQUEST_METHOD'] == 'POST') 
  {

  if(strlen(trim($password)) > 8)
   {
   echo"Password must be 8characters";
   }
   }
 ?>
4

2 回答 2

9

您的代码失败,因为该变量$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您当然应该在生产代码中做一些比 , 更用户友好的事情。

文档

于 2012-11-29T15:19:44.913 回答
2

也许您应该使用$_POST['password'],使用自动全局变量是错误的(希望在许多主机上禁用)。

同样将密码限制为 8 个字符似乎是个坏主意,无论如何您都应该对其进行散列,然后长度无关紧要。

于 2012-11-29T15:19:59.907 回答