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 :

Problème avec mysql_real_escape_string() [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut Problème avec mysql_real_escape_string()
    Bonjour à tous. Voilà, j'utilise le script habituel pour protéger les données qui arrivent par $_POST :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function securiser($valeur)
    {
       // Stripslashes
       if (get_magic_quotes_gpc()) {
          $valeur = stripslashes($valeur);
       }
       // Protection si ce n'est pas un entier
       if (!is_numeric($valeur)) {
          $valeur = mysql_real_escape_string($valeur);
       }
       return $valeur;
    }
    Seulement mon $_POST est un texte qui vient d'un textarea. Je voudrais qu'il garde les retours à la ligne et sauts de ligne. Avec ma fonction securiser(), les slashs sont enlevés car get_magic_quotes_gpc() est activé sur le serveur (je ne peux pas intervenir dessus). Et je me retrouve ensuite dans ma BDD avec le texte et les retours chariot sans la \ (juste r ou n) . Quand j'affiche mon texte aprés l'avoir récupéré, évidemment j'ai perdu la mise en page car les sauts de ligne et retours chariot s'affichent sans le \ au lieu de s'executer (exemple "je saute une lignern" au lieu de \r\n à la fin). Comment sécuriser mes données $_POST et en même temps conserver ma mise en page du texte que j'insère dans ma BDD. Merci à vous pour vos réponses et bonne continuation.

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    Avant d'appliquer ta fonction securiser tu peux faire un nl2br comme sa t'es \n seront remplacer par des <br/> et tu n'auras plus de problèmes...
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Merci pour ta réponse. J'ai bien pensé à utiliser nl2br avant. Il rajoute bien les <br> mais le texte affiche malgré tout les n et r sans leurs \ et ne les remplace donc pas. Du coup j'ai un texte du style "j'ai faim
    rn
    j'ai faim";

    Faut-il à l'affichage traiter ces rn en les effaçant? Je ne trouvais pas cela trés bon comme solution.

    En fait je voudrais afficher de la même façon que les messages de ce super forum!

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 669
    Par défaut
    c'est bizarre que tu te retrouve avec des "\r" et de "\n" tels-quels. tu fais quoi comme traitement avant de passer par cette fonction ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Je pense avoir résolu mon problème. En fait je fais juste la fonction securiser() puis j'insère mon texte dans la BDD. Puis quand je la ressorts par select, j'emploie nl2br(). Et là oh miracle tout s'affiche comme il faut. En tout cas merci à vous pour vos réponses... C'est super sympa. Je vais essayé d'aider aussi...
    Peut-être une petite question, la dernière promis...

    Faut-il encoder les < ou > avant de les rentrer dans la BDD ou ils peuvent être insérés comme cela?

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 669
    Par défaut
    Citation Envoyé par hubvicon
    Faut-il encoder les < ou > avant de les rentrer dans la BDD ou ils peuvent être insérés comme cela?
    ces caractères posent seulement problème quand ils sont affichés en HTML donc tu peux les stocker dans la base comme ça et ensuite pour l'affichage dans le code HTML utilise la fonction http://php.net/htmlspecialchars

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

Discussions similaires

  1. [SQL-Server] problème avec mysql_real_escape_string(htmlspecialchars) sous mssql
    Par evra76 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/06/2009, 20h00
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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