2007/09/08

PHP avoid SQL injection 2

之前在網路上找到一個函式可以分辨 php.ini 是否有開啟 magic_quote 並且把傳入的字串做處理:
function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

不過因為一個表單的欄位絕對不只十幾個,有可能超過一百的欄位,所以每次用到一個欄位就要自己打一次 $variabal = quotes( $variable ) 實在很不方便。

我想偷懶,所以用 foreach 把 $_POST 和 $_GET 的值一次處理完丟到 $http_post 和 $http_get 中,只要程式執行前執行一次所有欄位就全部處理完了。
function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

foreach( $_POST as $key => $value ){
$http_post[$key] = quotes( $value );
}
foreach( $_GET as $key => $value ){
$http_get[$key] = quotes( $value );
}

1 則留言:

  1. Code寫的又精簡又明白
    感謝你的分享....

    回覆刪除