在php中检查密码字符长度

  • 本文关键字:字符 密码 php php
  • 更新时间 :
  • 英文 :


我正在尝试检查用户在注册表中输入的密码长度。但我得到了意想不到的输出。这是我的剧本。

<?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.php
  • strlen-http://php.net/manual/en/function.strlen.php
  • array_key_exists-http://php.net/manual/en/function.array-key-exists.php
  • 比较运算符-http://php.net/manual/en/language.operators.comparison.php
  • 变量-http://www.php.net/manual/en/language.variables.basics.php

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

此外,将密码限制为8个字符似乎是个坏主意,无论如何都应该对其进行哈希处理,然后长度就无关紧要了。

最新更新