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

Soyez le premier à donner votre avis sur cette source.

Vue 6 919 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
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
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...
cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
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
cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
ça m'a donné une idée pour le passage par référence ^^
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 ?
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 :)

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.