2010-11-29 38 views
0

Jetzt benutze ich:Set-Funktion für jedes Array

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

aber wenn $ _POST mehrere Arrays hat ($ _POST [ 's'] [1]), dann funktioniert es nicht. Wie kann ich die Funktion für jedes Array einstellen?

+3

sollten Sie dies von Fall zu Fall tun, wenn Sie die Datenbankebene erreichen. Nicht so ganz oben. Aus diesem Grund und viele andere. Nicht zuletzt schützt Sie das nicht vor jeder Attacke und schafft ein falsches Sicherheitsgefühl. – DampeS8N

Antwort

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... 

?> 

Aber DampeS8N Kommentar sehen - wenn Sie dies tun, sind Sie Sicherheit falsch zu machen ...

0

Sie wollen eine rekursive Funktion verwenden, um Ihr Problem wie so zu überwinden:

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

Ich habe das gerade hier geschrieben, also nicht sicher, ob es tatsächlich funktioniert;) Probieren Sie es aus!