IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Quote & magiquote on [Oracle]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 108
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    This is a test' ok ' 3 ''
    le chaine est transformée en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    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 X : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 108
    Par défaut
    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

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 108
    Par défaut
    Ahhhh!
    Je vais tester ça. Merci beaucoup.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 108
    Par défaut
    En effet ça fonctionne.
    Merci bcp pour l'information.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  2. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo