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 :

mysql_real_escape_string(htmlspecialchars($_POST['texte'])) supprime une partie du texte [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Par défaut mysql_real_escape_string(htmlspecialchars($_POST['texte'])) supprime une partie du texte
    Bonjour,

    J'ai (encore) un bug sur du PHP qui nécessite votre aide.
    J'utilise ceci pour insérer du texte dans ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = mysql_real_escape_string(htmlspecialchars($_POST['texte']));
    C'est magnifique sur le papier mais quand un utilisateur du site entre quelque chose comme "test & test", seul test (avec l'espace) est inséré dans la base. Alors que selon la doc, le & devrais être remplacé par &

    Merci d'avance de l'aide

  2. #2
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    bonjour

    ton problème ne viendrait pas du fait que tu n'est pas précisé les flags. pour moi avec ENT_QUOTES tout fonctionne.
    https://secure.php.net/manual/fr/fun...ecialchars.php

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    houlàaa, que vient faire htmlspecialchars dans une insertion en base de données ? mysql_real_escape_string suffit amplement.
    En passant, l'extension mysql_xxx est cuite, il ne faut plus s'en servir et passer à celles qui lui succèdent : mysqli_ ou PDO

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Par défaut
    ton problème ne viendrait pas du fait que tu n'est pas précisé les flags. pour moi avec ENT_QUOTES tout fonctionne.
    https://secure.php.net/manual/fr/fun...ecialchars.php
    Malheureusement, ça ne change rien. test & test devient toujours test

    Edit : Sur mon local host, rien n'est supprimé mais pas en ligne. En ligne, j'utilise la 5.3.10. Sur localhost : 5.6.2.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    C'est plutôt les remarques de rawsrc qu'il faudrait prendre en considération...

  6. #6
    Membre confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Par défaut
    Bonjour,

    J'ai placé l'instruction en affichage. "test & test" s’insère correctement dans la base mais à l'affichage j'ai "test "... Et aucun flag ne résout mon problème.

    Je suis en train de me demander si je ne vais pas faire une Regex qui transforme le "&" en "et" manuellement... Très moche mais mieux que rien.

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par setni Voir le message
    BC'est magnifique sur le papier mais quand un utilisateur du site entre quelque chose comme "test & test", seul test (avec l'espace) est inséré dans la base.
    Au départ tu nous parles d'un problème d'insertion en base et tu postes le code de sélection des données...

    Poste le code entier de ta page, stp

  8. #8
    Membre confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Par défaut
    Le code entier de la page? Elle fait 1500 lignes...

    Voici le header que j'utilise : header("Content-Type: text/html;charset=utf-8");

    La question est : j'ai "test & test" dans la BDD. avec htmlspecialchars() comme défini haut dessus, ce qui sort est "test ".
    C'est juste ça que je cherche à comprendre.

  9. #9
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Citation Envoyé par setni Voir le message
    La question est : j'ai "test & test" dans la BDD. avec htmlspecialchars() comme défini haut dessus, ce qui sort est "test ".
    C'est juste ça que je cherche à comprendre.
    Ben htmlspecialchars("test & test") donne "test & test", quoiqu'il en soit, donc le problème vient d'ailleurs et cet ailleurs est compliqué à identifier sans le code. C'est toi qui vois...
    Le problème vient soit de ta requete d'insertion, que tu ne mets pas, mais en même temps, si tu as bien test & test en base de donnée...
    soit de ton affichage, mais là aussi difficile de comprendre pourquoi 'test & test' devient 'test ' qq part....

    EDIT: dans ton premier post, tu dis "seul test (avec l'espace) est inséré dans la base" et là tu dis "j'ai "test & test" dans la BDD"... c'est lequel ? le problème vient avant l'entrée en BdD ? ou à l'affichage, à la sortie de la BdD ??? C'est pas clair, ton truc....

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Le mieux serait que tu crée un petit exemple complet de code qui reproduise le problème. On pourrait mieux comprendre à quel niveau se situe le problème... Par ailleurs il est probable que tu résolve le problème en tentant de le recréer dans un exemple séparé (distinct de ton code actuel).

  11. #11
    Membre confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Par défaut
    Bonsoir

    J'ai créé un exemple de test et j'ai compris d’où venait mon problème: ... de js.
    En effet, je passe le texte par un ajax (l'utilisateur peut prévisualiser ce qu'il fait et/ou modifier)
    Et du texte brut dans un ajax avec un & ça donne ça:

    mapage.php?id=2&text=test & test

    J'ai donc corrigé le problème à l'aide de encodeURIComponent et ça fonctionne maintenant

    Merci pour l'aide et à la prochaine

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

Discussions similaires

  1. [AC-2003] Rechercher/Supprimer une portion de texte dans une chaîne de texte
    Par elgordopresto dans le forum Access
    Réponses: 6
    Dernier message: 22/01/2015, 14h15
  2. Supprimer une partie du texte
    Par djuls dans le forum Langage
    Réponses: 5
    Dernier message: 25/08/2010, 21h30
  3. Supprimer une partie de texte
    Par DelphLaga dans le forum Langage
    Réponses: 7
    Dernier message: 31/07/2006, 16h42
  4. [JTextField] Supprimer une partie du texte
    Par jean_bobi dans le forum Composants
    Réponses: 4
    Dernier message: 26/09/2005, 15h22
  5. [VBA][Excel]Supprimer une partie du texte d'une grosse liste
    Par annedeblois dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/09/2005, 17h15

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