2010-11-29 71 views
0

設定功能現在我用:爲每個陣列

<?php 
$_POST = array_map(mysql_real_escape_string, $_POST); 
$_GET = array_map(mysql_real_escape_string, $_GET); 
$_COOKIE = array_map(mysql_real_escape_string, $_COOKIE); 
$_REQUEST = array_map(mysql_real_escape_string, $_REQUEST); 

但如果$ _ POST有多個陣列($ _ POST [ 'S'] [1]),那麼它不工作。我怎樣才能爲每個陣列設置功能?

+3

當你到達數據庫層時,你應該根據具體情況做到這一點。不是像這樣在頂端咧嘴一笑。出於這個原因,還有其他許多人。不僅如此,這不會保護你免受任何攻擊,並且會產生虛假的安全感。 – DampeS8N 2010-11-29 20:31:38

回答

1
<?php 

function escape_recursive($item) { 
    return is_array($item) ? 
     array_map("escape_recursive", $item) : 
     mysql_real_escape_string($item); 
} 

$_POST = array_map("escape_recursive", $_POST); 
// etc... 

?> 

但見DampeS8N的評論 - 如果你這樣做,你做的安全錯誤的...

0

你想用遞歸函數來解決你的問題,像這樣:

function recursive_array_map($input){ 
    if(is_array($input)){ 
     return array_map('recursive_array_map',$input); 
    } 

    return array_map(mysql_real_escape_string, $input); 
} 

$_POST = recursive_array_map(mysql_real_escape_string, $_POST); 

我剛剛寫了這個inhere所以不知道它是否真的工作;) 有一個去吧!