2013-05-02 39 views
0

这是关于密码表单验证以及使用大写,小写,数字和字符组合的一般问题。研究表明需要preg_match来验证密码(或使用任何变量):(preg_match(“/ ^。(?=。{8,})(?=。 [0-9] )(?=。[az])(?=。 [AZ])。* $ /“)使用preg_match进行PHP表单验证以进行密码检查

虽然如何将我如何将它集成到if语句中? & &虽然这似乎忽略的preg_match一部分。如果(($通== $ PASS2)& &(的preg_match(“/ ^。(?= {8})(?=。 [0-9] )(?=。[az])(?=。 [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'); 

} 
?> 
+1

请界定“这似乎并没有工作” – leftclickben 2013-05-02 15:41:16

+0

事实上,这个代码看起来或多或少对我来说是正确的,虽然你真的,真的不应该使用mysql_ *(它已被弃用),你应该真的在插入数据库之前对输入进行清洁。这些代码将被广泛应用于任何SQL注入攻击。 – Adrian 2013-05-02 15:42:33

+0

该代码的作品,但我什么时候使用opperand像($ pass == $ pass2 && preg_match(“/ ^。(?=。{8,})(?=。[0-9])(?=。[ az])(?=。[AZ])。* $ /“)??? – user2141414 2013-05-02 15:54:20

回答

3

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

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

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

上述检查的正则表达式,密码至少为8个字符长,包含每个小写字母,大写字母和一些的至少一个

+0

感谢您对我们的帮助,我们非常感谢 – user2141414 2013-05-02 16:17:10