3 回答

TA貢獻1803條經驗 獲得超3個贊
嗯,這$var1 or $var2 or $var3
顯然是完全錯誤的。你不能or
串起來并期望一個不錯的結果。在大多數情況下,結果將是true
,這不是您想要的。
這讓我懷疑你的說法:“它可以使用兩種代碼”。
是的,如果我查看preg_match手冊,很明顯它不接受以逗號分隔的多個主題。
所以這兩個版本都不起作用。
除此之外,還有一個更普遍的問題。您正在嘗試使用preg_match()
將變量的可能內容限制在 1 到 12 個字符之間"a-zA-Z._"
。這是非常嚴格的。像這樣限制用戶名和密碼被認為是不好的做法。
您也只是die();
在找到不匹配的模式時,這對用戶來說信息量不大。
所以“更干凈”的版本是省略了這段代碼。
對不起,我不能更積極...也許提示會有所幫助?
看看filter_input(),它是我現在用來過濾輸入的東西。

TA貢獻1963條經驗 獲得超6個贊
另一種方法是使用foreach循環:
foreach ( ['username','password','captcha_code'] as $key ) {
if ( !preg_match("/^[a-zA-Z._ ]{1,12}$/", $_POST[$key]) ) {
die();
}
}

TA貢獻2080條經驗 獲得超4個贊
要將三個字符串與一個模式匹配,您可以嘗試使用此代碼。
$pattern = "/^[a-zA-Z._ ]{1,12}$/";
if(!preg_match($pattern, $_POST['username'])
or !preg_match($pattern, $_POST['password'])
or !preg_match($pattern, $_POST['captcha_code'])) {
die();
}
- 3 回答
- 0 關注
- 389 瀏覽
添加回答
舉報