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

Langage PHP Discussion :

htmlentities et mysql_real_escape_string


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut htmlentities et mysql_real_escape_string
    Bonjour,
    J'ai cherché un peu partout, mais une question me pose :p

    J'ai protégé mes données avant la requête avec un mysql_real_escape_string
    Bon sa marche bien il me des \ partout etc

    Mais hummm quand on veux afficher ces données ensuite, il va m'afficher les \ aussi lol
    Comment je retire cela ?


    Sinon, imaginon ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="prenom" type="text" class="validate['required'] text-input" value="<?php echo htmlentities($auteur[0]['prenom_auteur']); ?>">
    Si dans le prenom il y a un " ( guillemet ) pour x raison
    sa va fermer le parametre value avant la fin

    Je ne vois pas comment faire pour afficher des caractere comme sa, meme en echappant tout, sinon faut affiche direct \" etc ??

    Merci d'avance

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Kruggs Voir le message
    Bonjour,
    J'ai cherché un peu partout, mais une question me pose :p
    J'ai protégé mes données avant la requête avec un mysql_real_escape_string
    Bon sa marche bien il me des \ partout etc
    Mais hummm quand on veux afficher ces données ensuite, il va m'afficher les \ aussi lol
    Comment je retire cela ?
    Merci d'avance
    Simplement a la relecture de tes variables de MySQL tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $User= stripslashes($User);

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est avant l'insertion qu'il faut retirer les \ en trop : ils n'ont rien a faire dans la base.
    Desactive les magic_quotes, je suppose qu'ils viennent de la.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut
    euu a ba je me demandais aussi pkoi on mettais sa dans la base :p

    Je ne pense pas avoir les magic quote, c un serveur ovh en passant, je regarderais.

    Il ya un truk que je comprend pas, si j'utilise "mysql_real_escape_string" pour eviter des caractere speciaux dans les donnée entrées, il va mettre des \ partout et du coup dans la base aussi
    en théorie "mysql_real_escape_string" protege mais ne change pas les données ?
    donc je ne devrait pas avoir de \ ??

    Mais humm si l'utilisateur rentre dans un input <h1>teste</h1> et que je veux qu'il sauvegarde cela dans la base, et que quand j'affiche, sa m'affiche <h1>teste</h1> sans l'interpreter ?

    Et si dans le champ il met haha'huhu, avec le "mysql_real_escape_string" ca va m'eviter des pb sur la requete, ok, mais pour afficher, sa va fermer mon champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    				echo "<label>Compétences ".$i ."<span class='small'>19 maximums (facultatif)</span></label>
    				<input name='competence".$i."'  type='text' class='validate['required'] text-input' value='".stripslashes($value['label'])."'> <br/>";
    Du coup je ne voit que haha lol

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si ton utilisateur saisie ahah'huhu

    mysql_real_escape_string va donner ahah\'huhu

    Le \ est ensuite reconnu par mysql comme caractere d'echappement et ne sera pas present dans la donnée finale inseré dans la base.

    Ensuite pour l'affichage le probleme se repose
    si dans ta base tu as ahah"huhu, quand tu veux l'afficher :
    Le " casse la chaine et donc tu ne vois que ahah

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="'.htmlspecialchars($value['label']).'"
    Tu remarqueras au passage qu'en HTML, on utilises " et non '
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut
    humm moi il enregistre dans la base les \, cela serais du a des magic quote sur ON ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    value="'.htmlspecialchars(stripslashes($value['label'])).'">
    Avec cela, sa fonctionne, mais je doit enlever les \ huhu

    Merci pour les informations
    Faut que je trouve pourquoi il y des \ dans la base du coup

    Edit : c'est bon apres verification, jai les magicquote
    Bon ba j'ai capter, merci pour les infos

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

Discussions similaires

  1. [PHP 5.2] stripslashes, htmlentities et/ou mysql_real_escape_string
    Par cassis2k dans le forum Langage
    Réponses: 4
    Dernier message: 12/01/2009, 07h59
  2. Réponses: 7
    Dernier message: 24/09/2005, 13h30
  3. [MySQL] Chaine tronquée apres htmlentities.
    Par castaka dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2005, 12h54
  4. Réponses: 6
    Dernier message: 01/02/2005, 20h02
  5. [String] équivalent htmlentities
    Par mousstik dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/12/2004, 14h26

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