PHP表单验证使用preg_match进行密码检查


PHP form validation using preg_match for password checks

这是一个关于密码形式验证和使用大写字母、小写字母、数字和字符组合的通用问题。

的研究已经表明,preg_match需要验证密码(或无论你用的是什么变量):(preg_match("/^。(? ={8})(? =。[0 - 9])(? =。 [a - z]) (? =, [a - z ]).*$/")

但是我如何将它集成到下面的if语句中呢?我试过用&&尽管这似乎忽略了preg_match部分。If (($pass == $pass2) &&(preg_match ("/^ . (? ={8})(? =。[0 - 9])(? =。 [a - z]) (? =, [a - z ]).*$/"))

如有任何建议,不胜感激。

<?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');
}
?>

preg_match需要两个参数要查找的模式和要测试的字符串。另外,我不确定你正在使用的正则表达式是否会正常工作。试试。

$pattern = '/(?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{8,}/';
if (($pass1 == $pass2) && preg_match($pattern, $pass1)) {
    ...
}

您只需要匹配其中一个密码,因为如果($pass1 == $pass2)失败,那么preg_match甚至不会进行。

上面的正则表达式检查密码长度至少为8个字符,并且至少包含小写、大写和数字中的一个