2010-11-29 17 views
0

Maintenant, j'utiliser:Régler la fonction pour chaque tableau

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

mais si $ _POST a plusieurs tableaux ($ _POST [ 's'] [1]), il ne fonctionne pas. Comment puis-je définir la fonction pour chaque tableau?

+3

vous devriez vraiment le faire au cas par cas lorsque vous atteignez la couche de base de données. Pas au sommet comme ça. Pour cette raison, et beaucoup d'autres. Ce n'est pas le moindre qui ne vous protège pas contre toutes les attaques, et cela crée un faux sentiment de sécurité. – DampeS8N

Répondre

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

?> 

Mais voir le commentaire de DampeS8N - si vous faites cela, vous faites mal de sécurité ...

0

Vous voulez utiliser une fonction récursive pour surmonter votre problème comme ceci:

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

Je viens d'écrire ceci, donc je ne sais pas si cela fonctionne réellement;) Allez-y!