我正在尝试制作密码验证器并遇到问题。似乎我的代码不会读取特殊字符。下面是我的代码:
<?php
$Passwords = array(
'Pas$word1',
'Pas$word2',
'Pas$word3',
'Pas$word4',
'pas$word1',
'PAS$WORD1',
'Password1',
'Pas$word',
'Pas$word 1',
'Pas$word1234567890',
'P$wd1');
function validatePassword($Password)
{
if (preg_match("[^!-/0-9A-Za-z]", $Password)==1)
{
return TRUE;
}
else
{
return FALSE;
}
}
foreach ($Passwords as $Password)
{
if (validatePassword($Password) == false)
{
echo "<p>The password <em>$Password</em> does not appear to be valid.</p>";
}
}
echo "<p>Processing has completed.</p>";
?>
修复了我的数组,因此它有单引号,现在显示所有内容。目前的问题是显示所有内容。我的validatePassword函数有什么问题?
任何帮助都将不胜感激。
答案 0 :(得分:1)
使用单引号或使用反斜杠转义您的文字美元符号。否则,$word1
将被解释为名为word1
的变量。
答案 1 :(得分:1)
你的第二个问题是你的正则表达式上没有分隔符。变化:
if (preg_match("[^!-/0-9A-Za-z]", $Password)==1)
要:
if (preg_match("/[^!-/0-9A-Za-z]/", $Password)==1)
您的第三个问题是您已关闭/关闭错误报告。如果它一直存在,那么在运行代码时会发出许多警告,这些代码表明了问题的根源。
当您开发新代码时,请将其放在文件的顶部:
error_reporting(E_ALL);
ini_set('display_errors', 'On');