Caractère "\" intempestif

Résolu
Bonjour,
J'ai un soucis. Pour ceux qui suivent mes (trop nombreuses) questions, je suis en train de créer un site qui permet de créer des pages php avec un contenu rentré dans un formulaire.
Soucis : quand je tape un caractère spécial dans le formulaire (" par exemple), il est échappe automatiquement. Mais ça ne me va pas, je ne sais pas pourquoi ça fait ça.
Bref, eu final, si je tape "test", j'obtiens \"test\", et si j'édite, \\\"test\\\" et ainsi de suite...

Pourquoi ça fait ça ? Comment contrer ça ?

Merci !
Configuration: Windows Vista
Firefox 3.0.11

30 réponses

Résumé de la discussion

Le problème central est l’échappement automatique des guillemets lors de la saisie dans un formulaire PHP, probablement causé par l’option magic_quotes_gpc activée dans le php.ini. Il est fortement conseillé de la désactiver; cette option est notamment absente dans les versions PHP récentes et peut provoquer un double-échappement lors de l’édition, et elle n’existe plus en PHP 6. Pour corriger, modifier le php.ini en mettant magic_quotes_gpc Off et, le cas échéant, magic_quotes_runtime Off, puis redémarrer le serveur pour que les changements prennent effet. En cas de doute, vérifier quel php.ini est utilisé par le serveur et s’assurer que les changements sont bien pris en compte après redémarrage du service.

Bobot (l’IA à votre service)
  1. Salut

    L'option magic quotes du php.ini est surement activée. Il est fortement conseillé si c'est le cas que tu le desactive ( d'ailleurs elle n'existe plus en PHP 6 cette option )
    1. Contributeur
      salut,

      en nettoyant la chaine avec la fonction stripslashes() avant de l'afficher.

      <edit>
      mais Mimiste a raison, vaux mieux soigner la cause du mal que les symptômes…
      -:oD
      </edit>
      1. Voila donc le soucis. Comment faire pour modifier cette option ?

        Merci !

        Edit :
        magic_quotes_gpc	On	On
        magic_quotes_runtime	Off	Off


        La voila l'option à mettre à "off", c'est bien ça ?

        Merci !
        1. Ben elle doit deja y etre dans le php.ini

          tu passe la ligne

          magic_quotes_gpc = On

          a

          magic_quotes_gpc = Off
          1. En fait, ma question, c'est comment faire ça ? Il y a une fonction ?
            Merci !
            1. ben non, ta un fichier de configuration qui s'appel php.ini

              Tu l'ouvre avec le bloc note, tu trouve la ligne que je t'ai dis et tu enregistre et tu relance ton serveur !
              1. Voila, mais où se trouve ce fichier ? le phpinfo() m'indique
                Configuration File (php.ini) Path 	/conf/php.ini 

                mais où est ce dossier ?

                Merci !
                1. ben dans un des repertoire ou tu a du installer apache, je sais pas, fait une recherche sur ton pc
                  1. je n'ai pas installé apache (ou alors à l'insu de mon plein gré...)
                    1. Ben tu dois utiliser wamp non ? alors oui apache a été installé a l'insu de ton plein gré ^^
                      Si c'est le cas le php.ini doit etre dans un des repertoire de wamp
                      1. wamp ne me dit rien non plus... Qu'est ce que tous ces noms ?(oui, je passe pour un crétin...)
                        Merci !
                        1. tu utilise peut être la function stripslash() ou un truque dans le genre. je ne suis pas sur mais regarde.
                          ou peut être htmlspecialchars(). regarde tout de même on ne sait jamais.
                          1. j'ai l'impression que tu n'as pas trouvé ton php.ini

                            tu peux utiliser ini_set() pour modifier les information
                            1. pour trouver ton php.ini,
                              ouvre un terminal et tape "locate php.ini"
                              1. Désolé, je n'ai pas de terminal, je tourne sous vista (et cette invite de commande n'est pas reconnue).
                                Par ailleurs, la recherche avec l'outils de recherche de windows n'a rien donnée...
                                Merci !
                                • 1
                                • 2