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 :

Remplacer dans une chaîne des motifs spéciaux : \' et \" [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut Remplacer dans une chaîne des motifs spéciaux : \' et \"
    Salut,

    j'ai crée un champ de saisie de texte dans un formulaire.
    J'utilise le texte entré pour l'afficher dans une autre page.

    Mais quand on entre une apostrophe ' ou un guillemet " dans le texte, cela m'affiche dans l'autre page \' et \".

    Je stoke ce texte dans une table de postgreSQL entre l'étape de saisie et celle de réaffichage. Comment faire pour éviter cela.

    J'ai essayé avec eregi_replace de remplacer \' par ' et \" par " dans ma chaîne juste avant affichage mais ça me fait toujours les erreurs "Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING".

    Je pense que la solution ne doit pas être si compliquée mais j'ai du mal à trouver.

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    Met :
    addslashes($_POST['nomdetonformulaire'])

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    As-tu magic_quotes_gpc à on ?

  4. #4
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    Merci, mais où ajouter ce code ? Dans la page du formulaire ?

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    non, dans la page ou tu recois ton formulaire
    (le $_post équivault à la reception de ton formulaire et de son contenu)

    je t'ai dit une bétise, c'est pas addsalashes($_post['nomdetonformulaire']) mais addsalashes($_post['nomdetonchampsdetexte'])

  6. #6
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    J'ai essayé : addslashes($_post['nomdetonchampsdetexte']), aucun changement !

    Et enfin : $introduction = addslashes($_post['introduction']);
    Là, plus rien ne s'affiche !

    Pour la question de Mr N, je n'arrive pas à afficher php_info() ! Il me met qu'il y a une erreur et que c'est une fonction inconnue !

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    je connais pas non plus php_info() ! phpinfo() oui par contre

  8. #8
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    Je me disais aussi !
    Mais magic_quotes_gpc est bien à on !

  9. #9
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    Sinon, avec eregi_replace, c'est de la bidouille mais si ça marchait, ça serait toujours ça !
    J'ai fait ceci pour voir car les autres tentatives me donnent des parse errors mais ça ne fait rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $introduction = eregi_replace('\\\'','\'',$introduction);
    $introduction = eregi_replace('\\\"','\"',$introduction);
    Quelqu'un pourrait me donner un tuyau ?

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et bien justement passe le à OFF (sauf si tu as une application énorme que repose dessus) Il vaut mieux le passer à off et utiliser mysql_real_escape_string avant le passage dans mysql et c'est tout, tu n'auras plus de soucis !

  11. #11
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    Non seulement, je n'ai pas la main sur l'application mais en plus, c'est un grand projet dont je prends la suite donc je ne sais pas les conséquences que ça pourrait donner !

    Comment ferais-tu pour écrire dans une fonction un motif avec \" ou \' (expressions régulières) car php n'aime pas trop les trucs de ce genre "\""

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Alors ce que tu dois faire (c'est ce que je fais aussi car je peux pas modifier magic_quotes) dès que je récupère la valeur du formulaire, je fais un stripslashes. (pour annuler l'effet de magic_quotes)
    Ensuite je peux travailler en php sur une chaine "naturelle" par exemple l'afficher à l'utilisateur...
    Si je veux la stocker dans une BD, alors je l'échappe suivant le moteur sql. pour mysql, il faut utiliser mysql_real_escape_string.

  13. #13
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 104
    Points : 49
    Points
    49
    Par défaut
    Merci, c'était bien stripslashes qu'il me fallait ! C'est OK maintenant !

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

Discussions similaires

  1. Recherche dans une chaîne des codes contenus dans une table
    Par funkyjul dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2011, 08h28
  2. Remplacer des motifs dans une chaîne
    Par tonguim dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2009, 17h49
  3. [PHP 5.0] Occurences multiples à remplacer dans une chaîne
    Par oneTime dans le forum Langage
    Réponses: 5
    Dernier message: 14/04/2009, 00h36
  4. [Tableaux] Faire un remplacement dans une chaîne
    Par méphistopheles dans le forum Langage
    Réponses: 4
    Dernier message: 19/12/2006, 21h31
  5. Réponses: 4
    Dernier message: 04/11/2006, 20h36

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