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 :

Classe ou script de validation des formulaires.


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut Classe ou script de validation des formulaires.
    salut à tous,

    Je voudrai savoir ce que vous utilisez pour la validation d'une formulaire... une classe ?, un script ?, un créateur automatique ?

    - J'ai essayé le package de PEAR, certes pas mal, mais faut installer PEAR et c'est pas toujours faisable. Il est bien, simple, mais le design n'est pas toujours flexible, du coup, c'est pas simple pour l'inclure dans un site .

    - Les créateurs automatique, genre (http://phpforms.net), pas mal aussi, mais le code n'est pas forcement non plus tres propre. Et j'ai l'impression de ne rien maitriser

    - Les classes toutes faites (a aller voir, par exemple ici ou ici), j'ai un faible pour çà, surtout si on veut rester en objet. C'est simple et il y a de grandes possiblitées, si c'est bien fait.

    Donc, j'aimerai avoir votre avis, et surtout , ce que vous utilisez.

    Merci
    Fabrice

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    salut,
    personnelement je préfère faire ma validation coté client pour éviter des aller retours pour rien.
    Je me suis fais un objet qui me permet de valider mon formulaire et de controler certaines saisies en javascript.

  3. #3
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut
    oui, çà se défends comme point de vue
    Pour ma part, je viens de découvrir ceci... a tester je pense

    Fabrice

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Telle que je la vois moins la solution génèrera de HTML/JS et mieux ce sera.
    Je m'orienterai donc vers ta 3e proposition, eg un Valkyrie ( http://pecl.php.net/package/Valkyrie ).
    D'ailleurs je me demande ce que les ptits gars de chez Zend attendent pour spécifier une telle extension qui s'avère absolument nécessaire au développement web.

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    ben c est pas super dur de se le faire
    ca doit etre pour ca ...

    Effectivement certains sont réticents a l utilisation de javascript mais pourquoi attendre de reçevoir le formulaire sur le serveur pour s'apercevoir qu'il n'y a pas d'email ou que le nom n'est pas assez long ?

    Apres il faut renvoyer les données.

    De même il est rtes simple d'empecher de taper du texte dans un champ que l'on veut numérique.

    A part une vérification sur de la logique métier (par exemple vérifier qu'une quantité commandée n'excede pas la quantité en stock), je ne voit pas l'intéret d'une validation php.

    Meme si je sais que certains diront "oui mais y en a qui ont pas javascript", personnes auxquelles je répond qu'ils ont pas de chance si ils ne peuvent pas l'utiliser car ça change la vie d'une application web.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par siddh
    ben c est pas super dur de se le faire
    ca doit etre pour ca ...
    J'ose espérer que Zend soutenu par la Communauté feraient mieux que moi
    Et puis c'est toujours mieux d'avoir une API native officielle, reconnue, correctement documentée, performante, maintenue, etc. plutôt q'uun obscur script PHP bogué russo-polonais qu'on risque de perdre de vue au 1er changement de nom de domaine.

    Effectivement certains sont réticents a l utilisation de javascript mais pourquoi attendre de reçevoir le formulaire sur le serveur pour s'apercevoir qu'il n'y a pas d'email ou que le nom n'est pas assez long ?
    De toute manière il faut bien valider les données côté-serveur, donc àmha autant oublier la validation côté-client.

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    ben non on est pas obligé de les valider coté serveur si ca été fait coté client

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par siddh
    ben non on est pas obligé de les valider coté serveur si ca été fait coté client
    Par le simple fait qu'une personne mal intentionnée puisse désactiver JS et passer outre la validation côté-client on doit valider côté-serveur.
    Ou alors ton design t'autorise à avoir une BdD crade, mais bon.

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    tout depend dans quel contexte tu te place.

    Si tu as beaucoup de controle a faire, un "vrai" fomulaire, tu developpe une application et pas un site avec un formulaire de contact.

    Normalement tu doit savoir si tu as ou pas la possibilité de faire du javascript. Si tu peux, autant le faire. Sinon bien entendu ben tu valide coté serveur.

    Apres qu'une personne parano ou malveillante desactive le javascript et elle se rendra vite compte que ca ne marche pas de toute manière.

  10. #10
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par Séb.
    Citation Envoyé par siddh
    ben c est pas super dur de se le faire
    ca doit etre pour ca ...
    J'ose espérer que Zend soutenu par la Communauté feraient mieux que moi
    Et puis c'est toujours mieux d'avoir une API native officielle, reconnue, correctement documentée, performante, maintenue, etc. plutôt q'uun obscur script PHP bogué russo-polonais qu'on risque de perdre de vue au 1er changement de nom de domaine.
    Moi je fais les deux... pourquoi... la validation coté client ne coute rien en perf vu que c'est coté client et pour moi ça tient plus à au confort d'utilisation (ça évite le rechargement de la page, etc) qu'a la sécurité... une fois les données receptionnées je les vérifies coté serveur car comme le dit seb le javascript peut être désactivé coté client et pour moi il y a bien d'autre vérification à faire avant le traitement des données chose que je ne veux pas laisser faire au javascript... .. .

    Donc quand on peut faire les deux pourquoi se priver... .. .

    @ tchaOo°

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Citation Envoyé par kankrelune
    la validation coté client ne coute rien en perf vu que c'est coté client et pour moi tient plus à un confort d'utilisation (ça évite le rechergement de la page, etc)...
    wala
    Citation Envoyé par kankrelune
    une fois les données receptionnées je les vérifies coté serveur car comme le dit seb le javascript peut être désactivé coté client
    effectivement dans un cas ou tu peux pas savoir si les gens l'ont ou pas, je suis partisant du double controle mais je me met un flag qui me permet de savoir si le javascript a fait ou pas son controle pour pas doubler inutilement.
    Citation Envoyé par kankrelune
    et pour moi il y a bien d'autre vérification à faire avant le traitement des données chose que je ne veux pas laisser faire au javascript... .. .
    c'est ce dont je parlais comme logique métier je suppose

    C'est certes plus chiant de faire comme ça mais ça apporte un confort indéniable à l'utilisateur et ça c'est le plus important pour moi.
    Je préfère coder 2 heures de plus pour faire gagner 30s à l'utilisateur.
    C'est peut être bizarre mais bon, je suis un peu maso

    De toute manière je génere un maximum de code, donc a l'arrivée ça me coute finalement moins de temps, mais ça c'est encore autre chose ...

  12. #12
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par siddh
    C'est certes plus chiant de faire comme ça mais ça apporte un confort indéniable à l'utilisateur et ça c'est le plus important pour moi.
    Je préfère coder 2 heures de plus pour faire gagner 30s à l'utilisateur.
    C'est peut être bizarre mais bon, je suis un peu maso
    Tout à fait d'accord avec toi... .. .

    Moi je suis partisant de trois chose...

    Sécurité : 2eme controle sur le serveur

    Confort d'utilisation : controle coté client

    Perf (rapidité d'execution) : ici rien à voir mais ça ne les entame pas non plus

    @ tchaOo°

  13. #13
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Citation Envoyé par siddh
    je suis partisant du double controle mais je me met un flag qui me permet de savoir si le javascript a fait ou pas son controle pour pas doubler inutilement. ...
    Je ne suis pas d'accord avec toi la dessus, il faut considérer le javascript comme n'étant pas sur. C'est à dire que je peux très bien faire un POST vers ta page php avec soi disant le flags initialisé. On fait ce que l'on veux.

    Et si tu ne fait pas le controle en php, on peux facilement faire croire au php que le controle à déjà été fait alors que ce n'est pas le cas.

    Pour reprendre ton exemple, si un champ attend du numérique et que tu ne le vérifie pas en php, ca peux générer des erreurs de scripts si on tombe par exemple sur un or die(mysql_error()) qui pourrait donner un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error near "INSERT INTO bidule SET nombre=Truc envoyer en javasvcript"
    Ce qui est une info très interessante quand tu cherche à hacker un serveur par exemple. En un seul test, on sais qu'il existe une table 'bidule' avec un champ 'nombre'. Et ne parlons pas des injection SQL possible...

    Enfin tout ça pour dire que je suis pour faire une double vérification systématiquement...

  14. #14
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par GregPeck
    Citation Envoyé par siddh
    je suis partisant du double controle mais je me met un flag qui me permet de savoir si le javascript a fait ou pas son controle pour pas doubler inutilement. ...
    Je ne suis pas d'accord avec toi la dessus, il faut considérer le javascript comme n'étant pas sur. C'est à dire que je peux très bien faire un POST vers ta page php avec soi disant le flags initialisé. On fait ce que l'on veux.

    Et si tu ne fait pas le controle en php, on peux facilement faire croire au php que le controle à déjà été fait alors que ce n'est pas le cas.

    Pour reprendre ton exemple, si un champ attend du numérique et que tu ne le vérifie pas en php, ca peux générer des erreurs de scripts si on tombe par exemple sur un or die(mysql_error()) qui pourrait donner un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error near "INSERT INTO bidule SET nombre=Truc envoyer en javasvcript"
    Ce qui est une info très interessante quand tu cherche à hacker un serveur par exemple. En un seul test, on sais qu'il existe une table 'bidule' avec un champ 'nombre'. Et ne parlons pas des injection SQL possible...

    Enfin tout ça pour dire que je suis pour faire une double vérification systématiquement...
    +1

    @ tchaOo°

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    mwé enfin ca depend comment c'est codé derrière ...

    Personnellement, pour qu'un hacker me foute la merde dans mon code, il va falloir qu il s'accroche.
    Meme en ayant les sources je ne suis pas certain qu'il comprenne tout.

    Je ne me vante pas ou quoi que ce soit je tiens a le dire.

    J'ai une architecture de code qui fais que si tu connais pas a fond la poo, smarty, xml, css et javascript, tu pourras rien faire.

    J'utilise une gestion d'erreur personnalisée en me servant des exceptions.
    Les traces qui pourraient m'interresser en tant que developpeur sont dans des fichiers de logs protégés, pas dans la source.

    Depuis le debut j'essayes de vous faire comprendre que ça va etre différent pour moi selon si on developpe une "application web" ou un site dont on connais ni ne maitrise les visiteurs et leur matériel.

    Dans ce deuxième cas, il faut bien evidemment miser sur le serveur avec un plus en convivialité sur le client.

    Sinon, dans le cadre d'un intranet ou tu vas peut etre tomber sur 1 personne parmis 100 qui n'aura pas le jevascript, il faudra lui expliquer qu il faut le mettre en lui faisant comprendre que y a aucun risque pour lui et que sinon il pourra pas utiliser son outil de travail.

  16. #16
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Citation Envoyé par siddh
    J'utilise une gestion d'erreur personnalisée en me servant des exceptions.
    Les traces qui pourraient m'interresser en tant que developpeur sont dans des fichiers de logs protégés, pas dans la source.
    Dans ce cas, en effet ca peux être valable, seulement je ne pense pas que tout le monde code comme toi.

    Citation Envoyé par siddh
    Meme en ayant les sources je ne suis pas certain qu'il comprenne tout.
    Je traine souvent sur un site de challenge de hack. Et bien il y a des challenges où tu as le code php en clair sous les yeux, tu sais qu'il y a une faille d'un certain type et pourtant pour la trouver, c'est coton! J'ai un exemple sous les yeux qui fait 9 lignes, j'ai mis un peu de temps à trouver la faille.

    Enfin bref, moi je préfère ne faire confiance à personne, même pas à moi

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    oui je dis pas que mon code est infaillible loin de la certainement meme
    mais c est clair que va falloir etre motivé pour me faire chier sans voir le code.

    D'autant que si le mec a le code devant les yeux c'est deja trop tard ^^

  18. #18
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    D'autant que si le mec a le code devant les yeux c'est deja trop tard
    C'est clair !

  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Je vais programmer un piège a loup dans mon htdocs

  20. #20
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par siddh
    salut,
    personnelement je préfère faire ma validation coté client pour éviter des aller retours pour rien.
    Je me suis fais un objet qui me permet de valider mon formulaire et de controler certaines saisies en javascript.
    Ne pouvant pas présager des capacité de tous les navigateurs la validation côté client ne peu pour moi qu'être un plus.

    je fait donc les deux côté client et côté serveur.

    de plus le client n'a pas pas toujours accès à tout les élément nécessaire pour valider la saisie.

    par exemple dans la gestion des utilisateurs j'ai des groupes un groupe à un manager

    dans le formulaire de création d'un groupe je peu côté client vérifier les types les dates mais il est impossible de vérifier que l'identifiant du manager est bien en base.

    je fais donc des vérifications de type côté client et les mêmes plus quelques autres côté serveur.

    A+JYT

Discussions similaires

  1. [2.x] Validation des formulaires
    Par pc.bertineau dans le forum Symfony
    Réponses: 7
    Dernier message: 03/08/2011, 15h19
  2. Struts2 et la validation des formulaires
    Par Fichman dans le forum Struts 2
    Réponses: 16
    Dernier message: 13/06/2008, 16h10
  3. Script de validation de formulaire
    Par rberthou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/01/2008, 00h44
  4. [AJAX] Rendre full ajax un script de validation de formulaire
    Par Darkenshin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2008, 23h58
  5. [ Struts ] Validation des formulaires
    Par jeoff dans le forum Struts 1
    Réponses: 2
    Dernier message: 28/07/2006, 12h43

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