【分享】一種實用的處理表單參數和URL參數的方法,你想到了嗎?
本帖最後由 xjl756425616 於 2014-08-07 11:03:45 編輯
當你正在處理很多參數提交的時候,你可能會碰到資料庫查詢,插入等等的操作,
這時你需要轉義或者實體化
對安全不瞭解的phper初學者,寫查詢語句是這樣寫的
$sql="select * from demo where user='".$_POST['user']."'"";
那麼就有sql注入的危險
一般有點經驗的人寫查詢語句是這麼寫的
$sql="select * from demo where user='".addslashes($_POST['user'])."'"";
這樣寫沒問題,就是
1、顯得不專業
2、語句太多,每條都寫,繁瑣,難免遺漏
以我現在的掌握的知識再去寫這條語句的話,我還是會寫
$sql="select * from demo where user='".$_POST['user']."'"";
But我不是初學者,
我會在表單處理檔案開頭加上一句話,
$_POST=array_map("addslashes",$_POST);
實際源碼樣本
$_POST['user']="demo";
$_POST['content']="Hello,It's a book";
$_POST=array_map("addslashes",$_POST);
echo "";
var_dump($_POST);
?>
列印出來的結果
array(2) {
["user"]=>
string(4) "demo"
["content"]=>
string(18) "Hello,It\'s a book"
}
------解決方案--------------------
所以要這樣寫$a = array(
'a' => "a'b",
'b' => array("C'd", 123)
);
array_walk_recursive($a, function(&$v) { $v = addslashes($v); });
print_r($a);
Array
(
[a] => a\'b
[b] => Array
(
[0] => C\'d
[1] => 123
)
)