2011-03-19 2 views
2
foreach ($_POST as $key => $value) { 
    $_POST[$key] = mysql_real_escape_string($value); 
} 
foreach ($_GET as $key => $value) { 
    $_GET[$key] = mysql_real_escape_string($value); 
} 

Salut à tous,

Je protège mon db pour l'injection oppsite sql avec les codes ci-dessus. Mais quand je définis "nom" pour la case à cocher comme Checkbox_IDS [] formulaire pas de valeurs post. Comment puis-je résoudre ce problème?

Merci de votre aide, déjà maintenant.php forme post question

+0

également se référer à ce site: http://www.htmlite.com/mysql002a.php pour les mots SQL réservés qui ne peuvent pas être utilisés pour les colonnes de table –

+0

Je suis désolé. Mon anglais ne suffit pas. – Kerberos

Répondre

1

Par Checkbox_IDS[] vous voulez dire que vous rencontrez des variables de tableau. Dans ce cas, vous devez utiliser array_walk_recursive, qui gère les structures non plates. Regardez http://www.php.net/manual/de/security.magicquotes.disabling.php#91653 pour des exemples similaires.

Dans votre cas, vous feriez la même chose, mais avec la fonction appropriée s'échapper:

function mysql_real_escape_recursive(&$value) 
{ 
    $value = mysql_real_escape_string($value); 
} 
array_walk_recursive($_POST, "mysql_real_escape_recursive"); 
array_walk_recursive($_GET, "mysql_real_escape_recursive"); 

Notez que tout unilateraly cite comme si elle était cordes pourraient ne pas convenir dans tous les cas. Comme vous allez certainement sortir certaines de ces variables dans le contexte HTML, où cet échappement SQL indifférencié est un obstacle.

+0

De plus, en changeant unilatéralement le contenu des superglobaux, vous risquez d'endommager les bibliothèques que vous utilisez, car elles dépendent de l'obtention de données «vierges». –