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 :

Les contrôles de formulaire, quel test optimal ?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut Les contrôles de formulaire, quel test optimal ?
    bonjour a tous,

    je controle en php des données envoyées en get avant de les inserer dans une base de données, voici mes controles:

    $nomf=$_GET["nomflux"];
    $nomf=stripslashes($nomf);
    $nomf=htmlentities($nomf);
    $nomf=utf8_encode($nomf);
    le probleme est que si je veux envoyer des données comprenant un accent, l'envoie dans la base ne se fait pas. Ou est le probleme?

    merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Moi je ferai plutôt :

    $nomf=$_GET["nomflux"];

    // Ici test du type (numérique ou pas) et/ou de la longueur de $nomf

    // Protège les caractères spéciaux pour les insérer dans la BDD
    $nomf= addslashes($nomf);

    Ca suffit pas ?

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    On peut aussi encore plus protéger avec htmlentities() (qui convertit toutes les entités HTML en caractères normaux )
    Ce qui donnerait :
    $nomf= addslashes(htmlentities($nomf));
    Par contre, je ferai la vérification des types en Javascript.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    l'insertion dans la base ne marche tjs pas, d'ailleur meme sans controles ça ne marche pas si il y a des '

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Normalement addslashes() rajoute des slashes permettant d'échapper les guillemets simples ( [FONT=courrier]'[/FONT] ), guillemets doubles ( [FONT=courrier]"[/FONT] ), anti-slash ( [FONT=courrier]\[/FONT] ) et NUL (le caractère [FONT=courrier]NULL[/FONT] ).

  6. #6
    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
    C'est pas très conseillé de formater des données pour les rentrer dans une base de données, htmlentities() surtout!
    Pour obtenir une chaîne de caractères interprétées sans danger dans la requête, il faut utiliser mysql_real_escape_string() ou mysqli_escape_string() si tu travailles avec mysqli sur PHP 5! http://fr2.php.net/manual/fr/function.mysql-real-escape-string.php

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    J'utilise hemlentities() pour traduire les retours à la ligne dans les textearea.

    C'est pas très conseillé de formater des données pour les rentrer dans une base de données, htmlentities() surtout!
    Pour quelle raison ?

    il faut utiliser mysql_real_escape_string() ou mysqli_escape_string()
    Je ne connaissais pas ! C'est vrai que c'est plus pratique et sûrement plus sûr !!

  8. #8
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Citation Envoyé par Tipoun
    J'utilise hemlentities() pour traduire les retours à la ligne dans les textearea.
    Une chose que j'aimerais beaucoup faire, mais qui n'est pas essenties, si tu trouve un autre moyen ...

    Le problème avec les addslahes, c'est que ta base de données sera rempli de /', ce qui n'est pas très joli, et ca peut ausi lourdement faire deconner les recherche.
    Par exemple tu devra rechercher nom = "l\'arbre" au lieu de l'arbre.
    Si l'arbre est sélectionné à partir d'une listebox, ca te rajoute du code en plus. en addslahes/stripslahes dans tout les sens ...

  9. #9
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Ah oui ! je n'y avait jamais pensé pour les slashes
    Merci !

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/05/2012, 19h43
  2. [Toutes versions] Question sur les contrôles des formulaires
    Par Duddy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/01/2010, 12h42
  3. Réponses: 1
    Dernier message: 21/07/2006, 05h56
  4. Réponses: 2
    Dernier message: 04/02/2005, 11h03
  5. Réponses: 1
    Dernier message: 27/10/2004, 15h36

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