Php 3/4密码要求
我试图让我的网站要求用户(当他们创建帐户时)包含3/4密码要求。我希望密码包含以下要求:1。数字2。小写字母3。大写字母4。特殊情况符号/字符。以下是我目前掌握的代码:Php 3/4密码要求,php,database,passwords,Php,Database,Passwords,我试图让我的网站要求用户(当他们创建帐户时)包含3/4密码要求。我希望密码包含以下要求:1。数字2。小写字母3。大写字母4。特殊情况符号/字符。以下是我目前掌握的代码: $passwordspecs='^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ | ^(?=.{8, 20})(?=.*[a-z])(?=.*[A-Z])(?=.*[@$#£&]).*$ | ^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[
$passwordspecs='^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ | ^(?=.{8, 20})(?=.*[a-z])(?=.*[A-Z])(?=.*[@$#£&]).*$ | ^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[@$#£&]).*$ | ^(?=.{8, 20})(?=.*\d)(?=.*[A-Z])(?=.*[@$#^£&]).*$';
if(preg_match('/$passwordspecs/', $_POST['password'])) {
$results="INSERT INTO Operator (Username, Password, PermissionLevel)
VALUES ('$_POST[username]', '$_POST[password]', '$_POST[plevel]')";
echo "One user added!";
}
else {
echo '<script type="text/javascript">';
echo 'alert("Password needs to contain 3/4 requirements!")';
echo '</script>';
}
(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(8,20(20)元)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)()(a-z)(a-z)(a-z)(a-z)(a-z)()(a-z)(a-z)(a-z)(a-z)()(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)()(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(a-z)(()(^&).$;
if(preg_match(“/$passwordspecs/”,$_POST['password'])){
$results=“插入操作员(用户名、密码、权限级别)
值(“$发布[用户名]”、“$发布[密码]”、“$发布[水平]”);
echo“添加了一个用户!”;
}
否则{
回声';
echo“警报(“密码需要包含3/4要求!”);
回声';
}
我终于能够摆脱即将出现的错误消息,但现在无论我输入3/4或4/4密码要求,它都会直接转到else语句,我会收到警告消息。你有什么想法吗?或者有更简单的方法吗?你的问题在这里:
preg_match('/$passwordspecs/', $_POST['password'])
您正试图在单引号中访问变量$passwordspecs的值。你需要用双引号代替。否则,它将被视为字符串。将其更改为:
preg_match("/{$passwordspecs}/", $_POST['password'])
但你还有更多的问题:
此外,它还告诉用户必须以这种格式输入密码,从而向可能的“黑客”提供敏感信息,因为这样他们可以缩小所有可能的密码范围,以匹配您的格式,并使用暴力进行攻击(主题外)。请不要这样做。你只会激怒你的用户。使用单个正则表达式满足单个需求。将它们放入数组中,迭代并计数。
“/$passwordspecs/”
=>您需要双引号“/$passwordspecs/”
,否则变量将不会被解析和替换。注意:不要将密码存储为纯文本!小心你的代码容易受到sql注入的攻击谢谢你提供的安全信息,但幸运的是我现在不必担心这一点。我尝试将其更改为双引号,但仍然有相同的结果/问题我同意您的密码建议,但我只创建了被告知要执行的操作=/尝试以下操作:“/{$passwordspecs}/”