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 :

recup de données avec caracteres speciaux dans value [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 recup de données avec caracteres speciaux dans value
    bonjour

    j'ai dans un bdd des chaines avec des ' et des ", qui ont été enregistré par un formulaire quand je veux les remettre dans un <input type="text"> les données sont tronquées.
    exemple j'enregistre
    les"tar'de l'oubli"
    dans la bdd c'est correct dans mon champ value je n'ai que
    les
    quand je fais un echo sur la variable elle est affichée entière.

    requête d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     $resultat = mysql_query($sqlidentifiant) or die(mysql_error());
     while ($identite =mysql_fetch_array ($resultat)){
     
     $pass=$identite['pass'];
     
     
     $mail=$identite['mail'];
     }
    echo"<form action='compte-modif.php' method='POST'>";
     
            echo'Votre mot de passe:<input type="text" value="'.$pass.'" name="mpasse">';
    requête d'envoi à la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $motdepasse=$_POST['mpasse'];
    $motdepasse=  addslashes($motdepasse);
     
     $sqlupdateidentifiant="UPDATE utilisateurs  SET pass='$motdepasse' WHERE idutil='$identifiant'";
     mysql_query($sqlupdateidentifiant)OR DIE (mysql_error());

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Si tu as utilisé addslashes pour mettre en base alors c htmlentities pour l'affichage des données de la base.

    Ex manuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $str = 'Un \'apostrophe\' en ';
     
    // Affiche : Un 'apostrophe' en 
    echo htmlentities($str);
    enfin si je suis ce même manuel

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    à la place de addslashes, utilise mysqli_real_escape_string pour l'insertion dans la base. Pour l'affichage dans un input, utilise htmlspecialchars($pass, ENT_QUOTES).

    A+.

  4. #4
    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
    à la place de addslashes, utilise mysqli_real_escape_string pour l'insertion dans la base
    donc d'après la doc il vaut mieux utiliser ça que addslashes
    j'ai essayé ça et ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motdepasse=mysqli_real_escape_string($motdepasse);
    je ne comprend pas le $link
    Style procédural

    string mysqli_real_escape_string ( mysqli $link , string $escapestr )

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    premièrement le connecteur mysql ainsi que addslashes, stripslashes, etc... vont être abandonnés par php

    donc tu dois passer à mysqli ou pdo pour te connecter à mysql si tu as vocation à écrire du code qui reste valable de nombreuses années...

    par contre attention à ne pas mélanger les fonctionnalités et contextes des différents connecteurs sous peine d'avoir de sales surprises

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Effectivement ericd69, tu dois basculer du coté PDO ou msqli_*.
    Mais si tu gardes les fonction msql_*, c'est mysql_real_escape_string que tu dois utiliser.

    A+.

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

Discussions similaires

  1. [AJAX] Passer des données avec caracteres speciaux
    Par linar009 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 10/01/2007, 11h42
  2. Problème avec des caractères spéciaux dans une chaine
    Par thibaut06 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/11/2006, 16h46
  3. [JDBC]Caractères spéciaux dans une requete SQL
    Par frizby dans le forum JDBC
    Réponses: 2
    Dernier message: 28/11/2005, 18h01
  4. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24
  5. [MySQL] Script pour modifier les caracteres speciaux dans la bdd
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/09/2005, 13h07

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