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 :

[SQL] htmlentities(), nl2br() et base de donnée ?


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [SQL] htmlentities(), nl2br() et base de donnée ?
    Bonjour...

    J'ai lu dans une réponse qu'il ne fallait pas entrer de données htmlentifiées dans une base de données... (pourtant j'en vois beaucoup qui le font.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $message = htmlentities($_POST['message']);
     
    ...
     
    mysql_query(INSERT INTO blabla VALUES ($message));
    Donc ça, c'est pas à faire ?

    Il faut donc mettre des htmlentities() à chaques valeurs qu'on sort de la base de données ?

    Quelle est la raison exactement pour laquelle il ne faut pas entrer de code htmlentifié dans la base de donnée ? Parceque j'ai cherché et... je ne trouve pas.

    Merci si vous pouvez me donner une réponse clair.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    c'est simple :

    Il est plus logique, d'un point de vue fonctionnel, d'entrer dans la base de donnée EXACTEMENT ce que l'utilisateur tape, avec le moins de modifications possible.

    Dans le cas d'un forum par exemple, cela te permettra d'implementer facilement une solution d'edition de message, en restituant a l'identique le texte tapé.

    La seule methode a appeller avant l'insertion en base est donc l'une de celle la :
    addslashes
    mysql_real_escape_string

    qui permet juste de ne pas faire planter la requete SQL.

    Evidemment, si tu fait ca et que tu désactive le html dans tes messages, ca veux dire qu'il faudra ensuite, a chaque affichage, appeller htmlentities... alors que si tu le fait a la source, lors de l'insertion dans la base, tu n'a pas a le faire... reste a voir si tu veux une solution propre mais moins performante, ou une solution moins propre un peu plus performante...

    Si tu souhaite implementer une edition de message et que tu utilise htmlentities, il te faudra alors creer une methode qui fait le travail inverse de htmlentities ! Ou alors faire un code d'insertion spécifique lors de l'edition qui n'appelle pas a nouveau htmlentities... ce qui veux dire que si tu ajoute du nouveau texte tu doit le taper en html... bref, pas tres facile.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ah ok ! j'avais pas pensé effectivement à l'édition.
    Merci de ta réponse ! J'y vois plus clair maintenant. ^^

  4. #4
    Membre éprouvé Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Points : 1 080
    Points
    1 080
    Par défaut
    Moi aussi je faisait ça mais je me suis rendu compte que tu pouvais avoir des problêmes au niveau du dimensionnement de tes champs.
    Exemple: un champs VARCHAR(40) il suffit que le texte comporte quelque caractères spéciaux pour que le texte de rentre pas en entier!

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Hum... j'ai un petit problème...
    Ma version de php ne trouve pas la fonction mysql_real_escape_string()...

    Une manière spéciale de l'appliquer ?

  6. #6
    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
    Soit tu passes à une version récente de php, soit tu utilises mysql_escape_string (PHP >= 4.0.3)

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    C'est corrigé ! C'était juste mon éditeur de code qui était un peu périmé et qui ne reconnaissait pas la fonction.

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

Discussions similaires

  1. [SQL Serveur] Déployer une base de données
    Par aityahia dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 20/05/2007, 20h12
  2. Réponses: 2
    Dernier message: 23/11/2006, 11h37
  3. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 14h29
  4. [Sql server][Oracle]Migration base de donnée.
    Par WELCOMSMAIL dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 23/05/2006, 22h19
  5. [SQL] Se connecter à une base de donnée pervasive
    Par botambaoaks dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2006, 17h46

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