mais je trouve ça un peu lourd à gérer, c'est surtout bien quand tu destine ton application à devenir portable.
mouarf... n'est pas le but de tout code ? le jour ou ton FAI changera de version de PHP et changera allegrement sa config sans prévenir personne ca marchera plus... et qu'on ne me dise pas que ca n'arrive jamais, la preuve avec l'introduction des tableaux super globaux en php 4.1
d'après vous c'est mieux d'avoir des (") dans la db ou des (\")?
Pour moi la BDD doit contenir *exactement* ce qu'a tapé l'utilisateur, donc " dans ton exemple... mais la question est mal posée je pense. Deja le probleme ne se pose pas pour " mais pour ', et lorsque tu fera ton INSERT, tu sera obligé de rajouter un \ devant chaque ' sinon la commande SQL plantera
(
"INSERT INTO truc(champ) VALUES('machin'chose')"
est invalide,
"INSERT INTO truc(champ) VALUES('machin\'chose')"
est valide et le contenu du champ inseré est bien "machin'chose")
Pour ajouter \ devant les ', il est fortement recommandé d'oublier addslashes() et d'utiliser mysql_real_escape_string
Personnellement, je prefere travailler sans les \, c'est a dire qu'au debut de mon script, je verifie si le magic_quotes_gpc est positionné, et si c'est le cas, je fait un stripslashes().
Je travaille donc toujours sur les données réellement saisi par l'utilisateur.
Lors de l'utilisation d'une valeur saisie dans une requete (INSERT, UPDATE et meme SELECT, c'est pareil) j'utilise mysql_real_escape_string
Maintenant, il est *plus prudent* de travailler avec des \ (c'est a dire d'utiliser addslashes() sur toutes les variables si magic_quotes_gpc n'est pas positionné) car si on oublie a un seul endroit d'utiliser mysql_real_escape_string ou addslashes avant l'utilisation dans une requete :
* Ca peut faire planter le script (pas tres grave)
* C'est une faille de sécurité ouvrant aux SQL Injections (et ca ca peut etre TRES grave)
Evidemment, travailler avec des \ est hyper lourd, puisqu'on est obligé d'utiliser stripslashes a chaque fois qu'on veux recuperer la chaine réellement tapée par l'utilisateur, puis quand meme a nouveau mysql_real_escape_string avant le passage en base.
Un petit mot encore sur la "lourdeur" du test de magic_quotes_gpc :
il n'est pas tres lourd d'ajouter, en debut de chaque page (par exemple dans un include) un parcours des tableaux GET et POST pour modifier les variables.
PHP est deja un langage leger qui n'impose pas la déclaration ou le typage des variables, il me semble que ce n'est pas trop contraignant de s'imposer une sorte de "declaration" de variables pour passer un addslashes ou stripslashes
Partager