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. tu dis que stripslashes("\'"); te renvoi \' ?
    c'est bizarre ça chez moi ça enlève bien le \
    1. Contributeur
      salut,
      stripslashes("\'");

      t'as un apostrophe en trop.
    2. @Dalidac'est fait exprès justement comme il l'a dis s'il met ' il le retrouve échappé donc \'
      c'est cette chaîne que j'ai écrit sciemment

      car si j'ai bien compris il cherchait a dé-échapper son ses apostrophes
  2. pour ceux que ça interesse, j'ai une solution (mais c'est un peu con...) :
    	$texte = str_replace("\'" , "'" , $texte);


    Voila !

    En tout cas, merci à tous pour votre aide !
    1. je me permet de faire un petit up, c'est un de mes derniers soucis pour ce site, et peut être aurais-je plus de chance de réponse à une heure moins tardive...

      Merci à tous !
      1. Bonsoir !
        Alors, cette fonction qui n'échappe plus les ' ? Parce que quand je vais des recherches google, je trouve pas (ex : "ma vie m'échappe...")
        Merci !
        1. alors, stripslashes() n'échappe plus les ", mais comment ne pas échapper les ' ?
          Merci !
          1. hourra, je suis foutu !
            Merci quand même, parce que avec ce que je fais, je crains que stripslashes() ne me sois d'aucun secours...
            1. Tu ne peux rien faire, je disais cela avant pasque je pensai que tu travaillais sur ton pc avec wamp ! Car c'est bien la premiere fois que je vois un hebergeur qui laisse l'option magic quote active !
              1. Portant certaint hébergeur te donne le choix de l'activer ou non grâce à EZconfig
            2. je suis chez olympe network.
              J'ai téléchargé wamp, j'ai mon fichier php.ini. Je fais comment pour l'uploader afin de modifier les champs qui m'intéressent ?
              Merci !
              1. Non du tout, ce fichier en fait est un fichier de configuration de PHP.. Si tu utilise php chez ton hebergeur de toute facon tu n'aura pas acces au fichiers de configuration..

                Par contre j'aimerai bien savoir quel hebergeur tu utilise c'est plutot bizzare qu'un hebergeur ai laissé l'option magic quote active
                1. bon, vais-je être obligé d'installer apache ou wamp pour récupérer ce *:/"-éé_è' de php.ini ?
                  Merci !
                  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. pour trouver ton php.ini,
                      ouvre un terminal et tape "locate php.ini"
                      1. j'ai l'impression que tu n'as pas trouvé ton php.ini

                        tu peux utiliser ini_set() pour modifier les information
                        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. wamp ne me dit rien non plus... Qu'est ce que tous ces noms ?(oui, je passe pour un crétin...)
                            Merci !
                            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. je n'ai pas installé apache (ou alors à l'insu de mon plein gré...)
                                • 1
                                • 2