- 1
[Opened] Backslashes et jDb
Posted by Uriel C on 09/12/2007 14:21
Bonjour,
Je viens de remarquer que les resultats que me renvoient jDao (et apparament jDb également) conservent leurs \ de protection des quotes. Je n'avais pas constaté cela avant - ai-je oublié de tester ca ? - mais étant donné le volume de code que j'ai produit sans utiliser de stripslashes, persuadé qu'ils étaient gérés en amont, je me vois mal reprendre tout mon code pour les ajouter un par un.
J'ai trouvé un moyen de contourner le problème en modifiant la méthode fetch() de jDbResultSet pour ajouter un stripslashes() systématique. Mais je m'étonne que ca n'ait pas été prévu.
J'ai loupé quelque chose ou ce comportement est normal ?
Je suis sous jelix dev 1.0b2, avec magic_quotes_gpc à On et magic_quotes_runtime à Off mais changer ces valeurs de config ne semble pas modifier le comportement ici.
Merci
[Opened] Re: Backslashes et jDb
Posted by turowbye on 09/12/2007 17:15
Humm...
Personnelement, je n'ai pas de solution à proposer.
Remarque:
Si tu consultes la documentation de Jelix et plus précisément les pré-requis, tu verras qu'on y fait mention que Jelix support magic_quotes_gpc à off et non à on.
Windows 2000 - Apache 2.2.4 - PHP 5.2.2
[Opened] Re: Backslashes et jDb
Posted by Uriel C on 09/12/2007 17:26
Bien vu pour les prérequis. Je vais egalement jeter un coup d'oeil au plugin magic_quotes dont ca parle.
Merci !
[Opened] Re: Backslashes et jDb
Posted by laurentj on 09/12/2007 18:00
J'ai trouvé un moyen de contourner le problème en modifiant la méthode fetch() de jDbResultSet pour ajouter un stripslashes() systématique.
très mauvaise idée ça. Parce que si le contenu dans la base est correcte (du contenu qui aurait été inséré autrement que via un formulaire), alors tu te retrouve à supprimer des antislash légitimes !
Si tu enregistres dans ta base du contenu qui vient de la requête http (formulaire par ex), alors c'est à toi, dans ton code métier de faire le nécessaire avant l'inclusion dans la base, pour nettoyer le contenu des caractères indésirables. En d'autres termes, si magic_quotes est à on, soit le mettre à off, soit activer le plugin magic_quotes (qui fait un stripslash sur tout les paramètres), soit faire un stripslash dans ton code métier avant l'insert et non pas dans les classes de jelix (on ne touche pas aux classes de jelix, parce que si tu oublie que tu l'as patché, et que tu le met à jour...)
Dans tout les cas, tu as tout intérêt à désactiver le comportement de magic_quotes : il va être supprimé dans PHP6 (ça apporte plus de problèmes que ça en résoud).
[Opened] Re: Backslashes et jDb
Posted by Uriel C on 09/13/2007 09:19
Ok merci. Le magic_quotes va sauter, ca reste le plus simple pour moi :)
- 1