-
Quote & magiquote on
Bonjour,
Voila mon problème:
J'ai un script PHP qui génère des query INSERT/UPDATE en vue de les exécuter dans une base de données ORACLE.
Lorsqu'un utilisateur entre des quote (') dans le textarea qui sert de source à la génération de ma query ça me pose quelques soucis.
Le magicquote étant activé (et ne pouvant pas être désactivé) remplace les ' pas des \', mais voila en Oracle un quote doit être remplacé par un double quote pour être correctement interprété.
Je me suis dis qu'en utiliserun simple str_replace qui lui changerait tous mes quote en double quote je serait quite du problème, mais non vu que le magiquote est activé il me rajoute quand même des \ devant mes doubles quotes.
Et lorsque j'entre par exemple:
Code:
This is a test' ok ' 3 ''
le chaine est transformée en
Code:
This is a test\'' ok \'' 3 \''\''
.
L'insertion se fait alors correctement mais je me retrouve avec des \ dans ma DB... Je pourrais utiliser un stripslashes lors de l'affichage des informations mais je n'ai pas envie de polluer ma DB avec des données incorrectes.
La solution serait, je pense, de pouvoir désactiver le magicquote pour ce script pendant le temps de son exécution, mais je ne peux pas changer le PHP ini car ça aurait des conséquences sur d'autres programmes du server.
Merci
-
Vous pouvez passer vos données à stripslashes pour retirer les antislashs ajoutés et pour désactiver cette fonctionnalité peut être avez-vous la possibilité d'employer un fichier .htaccess :
Code:
php_flag magic_quotes_gpc Off
(ce paramètre n'étant pas modifiable dans son script car elle est déjà active si la configuration de PHP va en ce sens)
Pour information, PHP 6 fait (entre disparaître) disparaître cette fonctionnalité :D
-
MErci beaucoup pour cette réponse.
Mais utiliser le stripslashes me permettra juste de corriger les données récupérées dans la DB, correct?
Lors de l'insertion le magic quote ajoutera d'office les /, et l'utilisation de strip slashes n'a aucune utilité vu que l'ajout des slash se ferra de toute façon après.
Corrigez moi si j'ai tord.
Je vais voir si je peux utiliser le htaccess, mais ça n'est pas certain...
Merci encore
-
Euh non, la fonctionnalité magic_quotes_gpc n'intervient que sur les variables externes (comme les données de la méthode POST). Elle n'a aucun rapport direct avec la base de données. C'est pourquoi je vous proposais d'utiliser la fonction stripslashes sur celles-ci auparavant (plutôt que str_replace).
D'après mes recherches dans les sources de l'extension oci8, les autres paramètres magic_quotes (runtime), ne sont pas considérés par cette extension. Un var_dump ou autre impression vous permettra de savoir à quel moment cet échappement a été réalisé et de clarifier la situation.
-
Ahhhh!
Je vais tester ça. Merci beaucoup.
-
En effet ça fonctionne.
Merci bcp pour l'information.