这是关于密码表单验证以及使用大写,小写,数字和字符组合的一般性问题。
研究表明,验证密码(或您使用的任何变量)需要preg_match :( preg_match(“/ ^。(?=。{8,}})(?=。 [ 0-9])(?= [AZ])(?=。 [AZ])。* $ /“)
虽然如何将其整合到下面的if语句中?我尝试过使用&&和虽然这似乎忽略了preg_match部分。 if(($ pass == $ pass2)&&(preg_match(“/ ^。(?=。{8,})(?=。 [0-9])(?= [AZ])(?=。 [AZ])。* $ /“))
任何建议都将受到赞赏。
<?php
require "dbconn.php";
$username = ($_GET['username']);
$email = ($_GET['email']);
$pass = ($_GET['pwd1']);
$pass2 = ($_GET['pwd2']);
$USN = ($_GET['schoolnumber']);
$matching = 0;
if($pass == $pass2)
{
echo "<script type='text/javascript'> window.alert('Your details have been successfully registered, please proceed to login with your new credentials!')</script>";
echo '<script>javascript:window.close();</script>';
$query = "INSERT INTO customer VALUES ('".$username."','".$email."','".$pass."','face1.jpg','".$USN."','N')";
$results = mysql_query($query) or die (mysql_error());
$results1 = mysql_query($query1) or die (mysql_error());
}
else{
header('Location:register.php?matching=1');
}
?>
答案 0 :(得分:3)
preg_match
需要两个参数来查找模式和要测试的字符串。另外,我不确定你使用的正则表达式是否会起作用。尝试类似的东西。
$pattern = '/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}/';
if (($pass1 == $pass2) && preg_match($pattern, $pass1)) {
...
}
你只需要匹配其中一个密码,因为($ pass1 == $ pass2)失败然后preg_match甚至不会被执行。
上面的正则表达式检查密码长度是否至少为8个字符,并且至少包含小写,大写和数字中的一个