Gérer les échappements de caractères sur tableaux multidimensionnels

Soyez le premier à donner votre avis sur cette source.

Vue 6 935 fois - Téléchargée 184 fois

Description

Voici une fonction qui permet de rajouter des backslash devant les caractères qui peuvent être problématique dans votre code.
Mais à quoi ca sert réellement ? Vous pouvez éviter l'injonction SQL, les problèmes d'affichage dans votre site web et vos formulaire.
Vous n'avez qu'à vérifier si la fonction get_magic_quotes_gpc() n'est pas activée. Si tel est le cas, je vous conseille d'utiliser cette fonction.
Cette fonction est récursive, elle s'appelle elle même pour que tout vos valeurs soient problématiques dans un tableau soient précédées d'un backslash.

Source / Exemple :


<?php
/**

  • Ajoute des BackSlash avec la fonction addslashes à toutes
  • les valeurs de $table.
  • Cette fonction supporte le multi-table.
*
  • @param string[] $table Tableau à ajouter les slashes
  • /
function addSlash(&$table){ if(is_array($table)){ reset($table); while(list($key, $value) = each($table)) if(is_array($table[$key])) addSlash($table[$key]); else $table[$key] = addslashes($value); reset($table); } } ?> <?php // Ajoute des \ si le magic_quotes_gpc est a off if(!get_magic_quotes_gpc()){ addSlash($_GET); addSlash($_POST); addSlash($_COOKIE); } ?>

Conclusion :


Fonctionne sur PHP4 et PHP5.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Ok ^^
cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Avec PHP5, la différence est rendu extrèmement minime... par contre avec PHP4, c'est vrai qu'un foreach prend plus de temps. D'après un site web, j'ai fait un tit bench :

1 : foreach($aHash as $val); : 0.080000
2 : while(list(,$val) = each($aHash)); : 0.083000
3: foreach($aHash as $key=>$val); : 0.048000
4: while(list($key,$val)= each($aHash)); : 0.078000
5: foreach($aHash as $key=>$val) $tmp[] = &$aHash[$key]; : 0.102000
6: while(list($key) = each($aHash)) $tmp[]=&$aHash[$key]; : 0.114000
7: Get key-/ value-array: foreach($aHash as $key[]=>$val[]); : 0.071000
8: Get key-/ value-array: array_keys() / array_values() : 0.036000

Il s'agit bien de l'injection SQL.

Stop flood anthomicro... et répond pas à ce message en disant "ok".
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Lol ^^

ouais pour le flood désolé, sinon c'est bien injection ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Et heu je crois (mais je suis réelement pas sur du tout du tout) que foreach est plus rapide que while(list($key, $value) = each($table)) mais je sais pas si c'est possible d'exécuter ton code avec foreach :)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Quel floodeur celui la :D

Au fait, c'est pas injEction SQL ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.