亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 preg_match 檢查多個 $_POST

使用 preg_match 檢查多個 $_POST

PHP
喵喔喔 2021-09-18 10:48:24
只是一個關于preg_match檢查我的多個輸入(用戶名、密碼和驗證碼)的函數的正確格式的小問題基本上該代碼適用于所有三個輸入,但我不確定使用 ist 的“正確”方式。我只是想知道如果有之間的不同,$var1 or $var2 or $var3或,$var1 ,$var2 ,$var3它使用兩種代碼,所以我有點困惑,如果一個“更好”或者這無關緊要?;蛘咭粋€是更“干凈”的版本。if(isset($_GET['login'])) {    if(!preg_match("/^[a-zA-Z._ ]{1,12}$/",$_POST['username'] ,$_POST['password'] ,$_POST['captcha_code'])) {        die();        } 另一個工作代碼是:if(isset($_GET['login'])) {    if(!preg_match("/^[a-zA-Z._ ]{1,12}$/",$_POST['username'] or $_POST['password'] or $_POST['captcha_code'])) {        die();        } 
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

嗯,這$var1 or $var2 or $var3顯然是完全錯誤的。你不能or串起來并期望一個不錯的結果。在大多數情況下,結果將是true,這不是您想要的。

這讓我懷疑你的說法:“它可以使用兩種代碼”。

是的,如果我查看preg_match手冊,很明顯它不接受以逗號分隔的多個主題。

所以這兩個版本都不起作用

除此之外,還有一個更普遍的問題。您正在嘗試使用preg_match()將變量的可能內容限制在 1 到 12 個字符之間"a-zA-Z._"。這是非常嚴格的。像這樣限制用戶名和密碼被認為是不好的做法。

您也只是die();在找到不匹配的模式時,這對用戶來說信息量不大。

所以“更干凈”的版本是省略了這段代碼。

對不起,我不能更積極...也許提示會有所幫助?

看看filter_input(),它是我現在用來過濾輸入的東西。


查看完整回答
反對 回復 2021-09-18
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

另一種方法是使用foreach循環:


foreach ( ['username','password','captcha_code'] as $key ) {

    if ( !preg_match("/^[a-zA-Z._ ]{1,12}$/", $_POST[$key]) ) {

        die();

    }

}


查看完整回答
反對 回復 2021-09-18
?
犯罪嫌疑人X

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();


查看完整回答
反對 回復 2021-09-18
  • 3 回答
  • 0 關注
  • 389 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號