我試圖讓我的網站要求用戶(創建帳戶時)包含3/4密碼要求。我希望密碼包含的要求是:1.數字2.小寫字母3.大寫字母4.特殊符號/字符。這裏是我的代碼至今:3/4密碼要求
$passwordspecs='^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ | ^(?=.{8, 20})(?=.*[a-z])(?=.*[A-Z])(?=.*[@$#£&]).*$ | ^(?=.{8, 20})(?=.*\d)(?=.*[a-z])(?=.*[@$#£&]).*$ | ^(?=.{8, 20})(?=.*\d)(?=.*[A-Z])(?=.*[@$#^£&]).*$';
if(preg_match('/$passwordspecs/', $_POST['password'])) {
$results="INSERT INTO Operator (Username, Password, PermissionLevel)
VALUES ('$_POST[username]', '$_POST[password]', '$_POST[plevel]')";
echo "One user added!";
}
else {
echo '<script type="text/javascript">';
echo 'alert("Password needs to contain 3/4 requirements!")';
echo '</script>';
}
我終於能擺脫被即將到來的錯誤消息,但現在,如果我進入3/4或4/4密碼的要求,無論它直接到else語句,我得到警報消息。任何關於什麼是錯誤的想法或者可能有更簡單的方法來做到這一點?
(偏離主題)請不要這樣做。你只會激怒你的用戶。 – RichieHindle
對單個需求使用單個正則表達式。把它們放在一個數組中,迭代它們並計數。 – Bergi
''/ $ passwordspecs /''=>你需要雙引號'「/ $ passwordspecs /」',否則變量將不會被解析並在重要的旁註中被替換 – x4rf41