Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉRER LES ÉCHAPPEMENTS DE CARACTÈRES SUR TABLEAUX MULTIDIMENSIONNELS


Information sur la source

Catégorie :Chaîne de caratère Niveau : Initié Date de création : 03/03/2005 Vu / téléchargé: 5 184 / 128

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

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

  • <?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);
  • }
  • ?>
<?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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 03/03/2005 16:29:15

Salut,

Le problème (si on peut appeler ça comme ça) est que ça fait des addslashes sur tous les tableaux, et pas seulement sur les variables dont on se sert sur le script en cours, perte de performances donc...

Ensuite tu aurais pu faire la même chose avec stripslashes...

Enfin bon ce n'est qu'un détail...

signaler à un administrateur
Commentaire de Anthomicro le 03/03/2005 16:30:33

Je fais ma pub au passage :

pour toutes sortes de variables (tableaux, chaînes, etc...), ça gère également le stripslashes :

http://www.phpcs.com/code.aspx?ID=29887

signaler à un administrateur
Commentaire de Anthomicro le 03/03/2005 16:40:42

ça m'a donné une idée pour le passage par référence ^^

signaler à un administrateur
Commentaire de fuckya le 04/03/2005 11:15:19

Quel floodeur celui la :D

Au fait, c'est pas injEction SQL ?

signaler à un administrateur
Commentaire de fuckya le 04/03/2005 11:17:01

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

signaler à un administrateur
Commentaire de Anthomicro le 04/03/2005 11:42:13

Lol ^^

ouais pour le flood désolé, sinon c'est bien injection ;-)

signaler à un administrateur
Commentaire de GRenard le 04/03/2005 13:06:29

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

signaler à un administrateur
Commentaire de Anthomicro le 04/03/2005 13:35:43

Ok ^^

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.