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

时间:2013-05-02 15:39:37

标签: php html

这是关于密码表单验证以及使用大写,小写,数字和字符组合的一般性问题。

研究表明,验证密码(或您使用的任何变量)需要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');

}
?>

1 个答案:

答案 0 :(得分:3)

preg_match需要两个参数来查找模式和要测试的字符串。另外,我不确定你使用的正则表达式是否会起作用。尝试类似的东西。

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

你只需要匹配其中一个密码,因为($ pass1 == $ pass2)失败然后preg_match甚至不会被执行。

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