2013-05-02 35 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