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

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

PHP過濾查詢字符

PHP過濾查詢字符

PHP
王亞松 2016-12-12 12:56:40
ThinkPHP中有一段源代碼:這個函數是對$_POST中的數據進行過濾。array_walk_recursive($_POST,'think_filter') ; //對數組成員遞歸應用think_filter函數。請問:在下面這個函數中,怎么體現過濾了?value匹配條件后,value后面連接一個空格就是過濾了?我覺得,應該是$value="";才對啊,ThinkPHP源碼中是.=,請大神說一下,這是什么意思?function?think_filter(&$value){ ???//?TODO?其他安全過濾 ???//?過濾查詢特殊字符 ????if(preg_match('/^(EXP|NEQ|GT|EGT|LT|ELT|OR|XOR|LIKE|NOTLIKE)$/i',$value)){ ????????$value?.=?'?'; ????} }
查看完整描述

3 回答

?
一瞬兒光

TA貢獻178條經驗 獲得超70個贊

$arr?=?array(
????'a'?=>?1,
????'b'?=>?'LIKE'
)
$arr2?=?array(
????'a'?=>?1,
????'b'?=>?'LIKE?'
)
//這兩個數組一樣嗎?
sql??=?select?field?from?table?where?field_id?like?'%LIKE%';
sql2?=?select?field?from?table?where?field_id?like?'%LIKE?%';
//這兩個sql一樣嗎?
function?:?function?think_filter($value){}
function2:?function?think_filter(&$value){}
//這兩個function的參數一樣嗎?
//弄明白這三個的不同你就明白了。


查看完整回答
反對 回復 2016-12-12
  • 王亞松
    王亞松
    非常感謝。 數組:空格 sql : 匹配 LIKE,前后可加任意字符。 匹配 LIKE空格,前后可加任意字符。 function:索引,&$value 函數外部對應$value的變量,也會隨$value的變化而變化。 可我還是不明白:think_filter函數作用。 我覺得他應該是防止sql注入, 例如: 后臺PHP:$sql="select *from tb_user where username= '".$_POST['username']."'"; 如果獲取的$_POST['username']值為:"' or username LIKE '%s%"; $sql最終:"select *from tb_user where username='' or username LIKE '%s%'" 就會選出所有匹配%s%的用戶了。 我覺得think_filter這個函數,應該防止上面這種情況發生。顯然,$_POST['username']的值中的OR,LIKE等 是沒有被過濾掉的。例如上例中,就不匹配 think_filter()方法中的preg_match中的內容。 請大神說具體一點
  • 王亞松
    王亞松
    這個回復居然沒有格式,請大神幫忙看一下,我在自己的留言區寫了,看起來方便點
  • 3 回答
  • 0 關注
  • 1486 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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