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 :

Formulaire champ description [Fait]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut Formulaire champ description
    Bonjour,
    J'ai un formulaire avec un champ <textarea name="description"... et j'ai remarqué que lorsque l'utilisateur utilise les guillemets : "". le formulaire n'est pas enregistré dans la bdd. Que dois je faire.
    Merci d'avance

  2. #2
    Expert confirmé 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
    Par défaut
    Nous montrer ton code

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    addslashes($description) ; // puis stripslashes() pour l'affichage
    ou
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlspecialchars($description, ENT_QUOTES);
    ou
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities($description, ENT_QUOTES);

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea name="description" cols=45 rows=5></textarea>

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    as tu essayé les fonction que je t'ai mis plus haut.
    il faut les appeler avant d'envoyer à la DB.

    exemple avec addslashes() :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $x_description = addslashes($description);
     
    $sql = "INSERT INTO tatable (champ_description) VALUES ('$x_description')";

  6. #6
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut évite les attaques XSS
    Utilise htmlspecialchars($description) au lieu de htmlspecialchars($description, ENT_QUOTE)

    Cela te protègera des attaques XSS du genre
    <script> .... </script> qu'un utilisateur mal intentionné pourrait saisir dans ton textarea

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par N1bus
    as tu essayé les fonction que je t'ai mis plus haut.
    il faut les appeler avant d'envoyer à la DB.

    exemple avec addslashes() :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $x_description = addslashes($description);
     
    $sql = "INSERT INTO tatable (champ_description) VALUES ('$x_description')";
    J'ai une question:
    Si je mets juste
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $description = addslashes($description);
     
    $sql = "INSERT INTO tatable (description) VALUES ('$description')";
    est-ce que ca marche?

    Je n'ai pas encore essayer ta solution

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    est-ce que ca marche?
    Pareil .

    (moi, je mets toujours des noms de variables avec des préfixes lorsque l'original a été modifié.
    ça me permet de savoir où j'en suis si la variable réapparait plus tard dans le code- surtout si elle réapparait 200 lignes plus loin ....)

  9. #9
    Expert confirmé 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
    Par défaut
    Quel est le SGBD ? MySQL ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par Mr N.
    Quel est le SGBD ? MySQL ?
    MySQL

  11. #11
    Expert confirmé 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
    Par défaut
    Alors il ne faut pas utiliser addslashes mais http://mysql_real_escape_string

    et ne pas utiliser htmlentities/htmlspecialchars avant d'inserer en bd. htmlentities/htmlspecialchars sont destiné à l'affichage, pas au stockage.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par Mr N.
    Alors il ne faut pas utiliser addslashes mais http://mysql_real_escape_string

    et ne pas utiliser htmlentities/htmlspecialchars avant d'inserer en bd. htmlentities/htmlspecialchars sont destiné à l'affichage, pas au stockage.
    Donc dans mon cas pour enregistrer dans la base je dois faire ca ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $description = mysql_real_escape_string($description);

  13. #13
    Expert confirmé 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
    Par défaut
    oui

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Merci beaucoup. Est ce que je dois faire ca pour tous les champs de mon formulaire ou bien juste les champs du type textearea?

  15. #15
    Expert confirmé 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
    Par défaut
    tous les champs. le mieux est d'utiliser l'exemple 3 de la doc officielle :
    http://php.net/mysql_real_escape_string#AEN116943

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Je pense avoir oublié de préciser un truc important. Mon formulaire est en plusieurs pages et je transmet les info par la méthode POST d'une page à l'autre.

    En page 1 j'ai le champ description et d'autres champ. Voici le code du champ description:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <textarea name="description" cols=45 rows=5 ></textarea>
    En page2 je transmet les info comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $description=""; if(!empty($_POST["description"])) $description=$_POST["description"];
    En page 3 je transmet les infos et j'enregistre dans la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $description=""; if(!empty($_POST["description"])) $description=$_POST["description"];
    J'ai essayé d'ajouter mysql_real_escape_string dans le code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $description=""; if(!empty($_POST["description"])) $description=mysql_real_escape_string($_POST["description"]);
    mais ca n'enregitre pas toutes les infos dans la base.

    Par exemple pour la phrase :
    Vds "superbe" voiture noire/bleu
    Ca enregistre
    Vds \\\
    Que dois je faire???

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    quelqu'un pourrais m'aider svp?
    Merci d'avance

  18. #18
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut c'est normal
    Car ta variable $description dans ta deuxième page n'a pas une portée indéfinie. Elle est limitée à l'exécution du script. Pour la transporter vers la troisième page tu dois l'insérer dans le formulaire de la deuxième page dans un champ hidden:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="description" value="<?php echo $description ?>" />
    Puis en cliquant sur le bouton submit du formulaire cela augmentera la portée de la variable $description au script de la page suivante.

  19. #19
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut ou alors...
    Ou alors tu utilises les sessions.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 175
    Par défaut
    Citation Envoyé par zyongh
    Car ta variable $description dans ta deuxième page n'a pas une portée indéfinie. Elle est limitée à l'exécution du script. Pour la transporter vers la troisième page tu dois l'insérer dans le formulaire de la deuxième page dans un champ hidden:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="description" value="<?php echo $description ?>" />
    Puis en cliquant sur le bouton submit du formulaire cela augmentera la portée de la variable $description au script de la page suivante.
    C'est exactement ce que je fais. Je passe les variables sur la page 2 avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="description" value="<?php echo $description ?>" />
    et ensuite je les enregistre. Mon problème est de traiter les caractères spéciaux du style "", ', /.

Discussions similaires

  1. [formulaire] champ de saisie en majuscule
    Par wolflinger dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 05/11/2007, 15h01
  2. formulaire: champ texte + liste deroulante
    Par mat21 dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2006, 10h01
  3. sous-formulaire : champs provenant plusieurs tables
    Par patbeautifulday1 dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 11h17
  4. Formulaire, champs de type file, value
    Par Space Cowboy dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 08h29
  5. remplir champs Description dans table AS400
    Par TOPGUN89 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 14/07/2005, 17h57

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