8792 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Bison a écrit :

Le but de l'article n'est rien de plus que de montrer une méthode de vérif liée à php.
Bison a écrit :

echo 'Les champs ',implode(', ',$corrige),' sont obligatoires<br /><br />
<a href="javascript:history.go(-1);">Corriger ou complètez les champs erronés !</a>';


La méthode n'est pas bonne justement!
Modifié par SuD (26 Oct 2006 - 16:49)
fodjio a écrit :
Si le javascript est désactivé l'utilisateur ne peut pas soumettre le formulaire.

Parce que le code du bouton ce présente comme ça :
<input name="" type="button" value="Envoyer" onclick="verifForm();" />
En dehors de tout problème d'accessibilité, ta façon de faire est discutable :

Rien n'empêche un utilisateur d'envoyer les valeurs qu'il veut à la page qui traite le formulaire.

Par exemple, je peux très bien m'amuser à créer une page chez moi qui contient le formulaire suivant :
<form action="http://example.com/" method="post">
  <input name="champ1" type="text" />
  <input name="champ2" type="text" />
  ...
</form>
puis l'ouvrir, remplir les champs comme je le veux et soumettre.

Voilà pourquoi il faut toujours effectuer les vérifications sur le serveur.
SuD a écrit :
La méthode n'est pas bonne justement!

Ah oui... et si le js n'est pas activé ?
Oui... et si ma tante en avait... Smiley langue

Je ne connais aucun utilisateur lambda qui désactive le js.
Dire que la méthode n'est pas bonne simplement parce qu'il y a un risque que j'estime à 0,000001 % que quelqu'un désactive son js.

Sans js, plus de bbcocde sur ce forum.
Sans js, plus d'accès à ton banking online
Bref, sans js... des milliards de pages sont "out of service"

Pour ce qui est de la méthode préconisée dans le lien que tu as cité... je peux aussi chicaner :
Pourque le message Ce champ est obligatoire apparaît-il d'entrée de jeu ?
Avant même de commencer l'internaute est déjà rappellé à l'ordre par du rouge.

Mais c'est pas grave, tu veux voir un autre code, pas de problèmes, je vais le taper et l'ajouter à l'article.
Modifié par Bison (26 Oct 2006 - 17:19)
Bison a écrit :

Ah oui... et si le js n'est pas activé ?
Oui... et si ma tante en avait... Smiley langue


Oui c'est vrai que ça c'est pas top mais c'est pas de ça que je parlais.

Dans ton script, quand un champ du formulaire n'est pas renseigné, on va arriver sur une page qui donne juste un message d'erreur et on a perdu de vue le formulaire, obligé de revenir en arrière et de tout se retaper à remplir. Ca va bien pour un formulaire de 3 ou 4 champs mais j'ose même pas imaginer la colère de l'utilisateur s'il a mis 10 minutes à remplir un formulaire plus important.

Pour moi, une bonne validation de formulaire côté serveur ça passe au moins par un affichage des messages d'erreur sur la page qui contient le formulaire, avec une mémoire de ce qui a déjà été saisi.

Bison a écrit :
Je ne connais aucun utilisateur lambda qui désactive le js.

Ce n'est pas qu'une question de désactiver le JS... JS n'est pas supproté par tous les navigateurs! Ces utilisateurs lambda existent, ce n'est pas une légende urbaine, bienvenue sur alsa.

Bison a écrit :
Dire que la méthode n'est pas bonne simplement parce qu'il y a un risque que j'estime à 0,000001 % que quelqu'un désactive son js.

Comme je te l'ai dit, ce n'est pas du JS que je parlais quand je disais que la méthode n'est pas bonne...

Bison a écrit :

Bref, sans js... des milliards de pages sont "out of service"

Oui malheureusement, raison de plus pour faire un effort et ne pas suivre bêtement la masse.

Désolé pour le poluage du post.

Edit:
Bison a écrit :

Pour ce qui est de la méthode préconisée dans le lien que tu as cité... je peux aussi chicaner :
Pourque le message Ce champ est obligatoire apparaît-il d'entrée de jeu ?
Avant même de commencer l'internaute est déjà rappellé à l'ordre par du rouge.

T'as pas du tout comprendre... il y a pour chaque étape un aperçu de ce que ça donne et de ce à quoi chaque section traite... si tu vas à la dernière étape qui correspond au script complet, il n'y a rien qui s'affiche en rouge Smiley ohwell

Bison a écrit :
Mais c'est pas grave, tu veux voir un autre code, pas de problèmes, je vais le taper et l'ajouter à l'article.

Ne le prends pas comme ça, je veux pas t'agresser Smiley sweatdrop
Modifié par SuD (26 Oct 2006 - 17:30)
Je ne me sens pas agressé, j'écoutes simplement ce que tu dis.
C'est vrai que j'ai peu l'habitude d'utiliser les smileys pour fait passer l'émotion Smiley decu Smiley cligne

Mais je reste sceptique quand même... dans le code source de la dernière étape (dans laquelle je ne trouves pas de rouge, en effet) je trouve ça :
<form name="inscription" id="inscription" method="get" action="#" onsubmit="return validateForm(this)">


En plus un form en method GET ????
Modifié par Bison (26 Oct 2006 - 17:45)
Bison a écrit :
Mais je reste sceptique quand même... dans le code source de la dernière étape (dans laquelle je ne trouves pas de rouge, en effet) je trouve ça :
<form name="inscription" id="inscription" method="get" action="#" onsubmit="return validateForm(this)">

Oui il y a un appel javascript mais il ne gène pas la validation du formulaire dans le cas du JS désactivé! C'est ça le principe, on peut utiliser du javascript, pourvu que l'ensemble reste accessible. Dans le cas de ce script, le JS n'est utilisé que pour faire une "pré-validation" côté client (donc instantannée) avant l'obligatoire validation côté serveur. Si JS n'est pas supporté côté client, la pré-validation ne se fera pas, on passe directement à la validation côté serveur.

Bison a écrit :
En plus un form en method GET ????

Oui je suis d'accord, c'est pas très commun, mais si dans le cas de ce formulaire on est sûr que l'url avec les données ne dépassera pas 255 caractères, pourquoi pas, le résultat sera le même.
Modifié par SuD (26 Oct 2006 - 18:16)
Administrateur
Bison a écrit :

Ah oui... et si le js n'est pas activé ?
Oui... et si ma tante en avait... Smiley langue

Je ne connais aucun utilisateur lambda qui désactive le js.
Dire que la méthode n'est pas bonne simplement parce qu'il y a un risque que j'estime à 0,000001 % que quelqu'un désactive son js.

Je ne me considère plus utilisateur lambda mais à l'occasion je te présenterai les maudits/bénis (question de point de vue) admins système de la COGIP qui désactivent JS sur les centaines de postes dont ils ont la responsabilité, ce qui fait des centaines d'employés de la COGIP qui n'ont aucun moyen d'activer JS sur leur navigateur ... Smiley rolleyes
J'en remet une couche, mais il me semble que les estimations parlent plus souvent de 10% d'utilisateurs sans JS que de 0,0000001% Smiley eek
Sopo a écrit :
J'en remet une couche, mais il me semble que les estimations parlent plus souvent de 10% d'utilisateurs sans JS que de 0,0000001% Smiley eek

Bien, admettons. Smiley smile
10% dans le monde ???
Bah, ça reste donc négligeable dans la zone francophone mondiale.
C'est encore plus négligeable par rapport à la zone francophone européenne.
Cela devient même ridicule à la hauteur de la France
Et si en Belgique un seul utilisateur n'a pas le js, il n'a donc aucune chance d'avoir un accès à une banque en ligne. Smiley ohwell

Pire, si c'est un user de ce site, il n'a pas accès à ce forum qui utilise le js pour le fumeux bbcode. Smiley langue

En gros, parler à tout bout de champ de la désactivation du js, c'est bien beau, mais ça ne me semble pas vraiment tenir la route.
Que ça existe, je suis d'accord, que cela va devenir une règle, j'en doute.

Mettre en avant un bête history.go(-1) en criant haut et fort que c'est pas valide, que ceci et que cela et que la méthode est foireuse c'est vachement gros.
D'autant que l'exemple qu'on me donne utilise une méthode pire que celle que je proposais (après relecture, c'est monstrueux même) et de toute façon liée aussi au js. Smiley eek
Par contre, la syntaxe HTML du formulaire que j'avais donné en exemple dans le code php était quelque peu dépassée (elle était valide HTML4 de toute façon, c'est certain) j'en suis conscient, mais rien de bien marquant pour autant.

Bref, si on revenait au code initial du posteur, qui pour l'instant échappe à toutes vos remarques.
Il serait p'têt bon de rappeler que je disais que les var-var et le switch c'est de la daube inmaintenable. Smiley fache

Je me suis arrêter à la hauteur de son switch, il y a le reste à commenter Smiley langue
a écrit :
Bref, si on revenait au code initial du posteur, qui pour l'instant échappe à toutes vos remarques.
Il serait p'têt bon de rappeler que je disais que les var-var et le switch c'est de la daube inmaintenable.
Yep, je suis d'accord. Mais quand on jette des pavés dans la mare, forcément ça fait des vagues Smiley ravi

Personne n'a dit que le JS c'était pas bien. Mais, vu qu'on est sur un forum fort orienté accessibilité, en plus des standards, c'est normal que les gens tiquent. Et ton analyse concernant les zones géographiques reste fumeuse. 10% ça reste 10% ... qu'est-ce qui te fait dire que les Africains, les Asiatiques et les Américains ont plus souvent désactivé JS que les autres ?

Un utilisateur sans javascript sur ce forum perd quelques fonctionnalités, mais les principales restent en place. C'est ça qu'on appelle l'accessibilité, entre autres : le forum reste fonctionnel, même si c'est un peu moins agréable.

Bref, un formulaire qu'on ne sait pas envoyer sans javascript, je maintiens que c'est pas génial. Surtout que tout pourrait être contrôlé côté serveur, sans que ce soit plus compliqué ...

Après, fodjio fait ce qui lui plaît Smiley cligne
Bison a écrit :
Mettre en avant un bête history.go(-1) en criant haut et fort que c'est pas valide, que ceci et que cela et que la méthode est foireuse c'est vachement gros.

(Euh, je me sens un peu visé, alors je vais répondre, encore désolé à l'auteur du post Smiley langue )
1) Un bête "history.go(-1)" , ce n'est pas "pas valide", c'est "pas accessible"
2) Oui, la méthode n'est pas terrible (n'éxagère pas ce que j'ai dit), ce n'est pas une question de validité ou d'accessibilité, mais juste de bon-sens.

Bison a écrit :
D'autant que l'exemple qu'on me donne utilise une méthode pire que celle que je proposais (après relecture, c'est monstrueux même) et de toute façon liée aussi au js. Smiley eek

Ah oui? Pourquoi?
Sinon, au sujet du JS, le script l'utilise en effet mais n'est est pas dépendant, il reste accessible, JS est juste utilisé pour "le confort" de l'utilisateur qui le supporte.

Bison a écrit :
Par contre, la syntaxe HTML du formulaire que j'avais donné en exemple dans le code php était quelque peu dépassée (elle était valide HTML4 de toute façon, c'est certain) j'en suis conscient, mais rien de bien marquant pour autant.

Le code de HTML présent dans ton script n'a été critiqué par personne, c'est toi qui t'es senti visé sur ce point, c'est sur la logique du traitement de formulaire que j'avais réagi. Je ne suis pas un intégriste des standards, le HTML présent était tout à fait correct comme tu l'as dit.

Bon sinon, pour la théorie du 10% ou du 0,0000000000001% ... euh Smiley biggol
Modifié par SuD (26 Oct 2006 - 21:42)
Sopo a écrit :
Surtout que tout pourrait être contrôlé côté serveur, sans que ce soit plus compliqué ...

Après, fodjio fait ce qui lui plaît Smiley cligne

Alors là, je suis entièrement d'accord
hey Smiley smile

euh moi je répond complètement à côté mais quelque chose m'a interpelé. C'est surtout pour aider fodjio pour sa programmation PHP.
Il ne faut pas abuser des die, et exit. Ok, ils sont très pratiques, mais on risque d'avoir des surprises niveau validation de ton code.
Si tu as un die('ciao'); au milieu de ta page, bonjour les erreurs, et c'est pas beau, pour toi, et pour l'utilisateur, qui ne vient comprendre.
Donc la solution est : soit de faire un trigger_error (cf : doc PHP sur trigger_error();), soit de faire un cache, et si tu as une erreur (détecter et contrôler par : set_error_handler et tu mets ta page en cache, si une erreur est détecter, alors tu vides et supprimes ton cache, et tu die ton erreur, c'est beaucoup plus propre).
Ca peut paraître compliqué comme ça, mais j'utilise ça, et c'est tellement plus simple.
L'utilisateur n'a pas qu'un bout d'erreur, et un bout de page (au choix), il a juste une erreur, et c'est tout (ou la page si pas d'erreur : mieux Smiley langue )
Ca peut paraître complexe, si tu veux plus d'infos, demandes moi -- j'en serais ravi Smiley smile --, je ne connais pas trop ton niveau en PHP, mais c'est accessible comme technique. On apprend avec la doc, ca va plus vite Smiley smile

Ce message est un peu hors sujet, mais c'est une sorte de ras-le-bol de voir des die partout, alors qu'un trigger_error dans un cache avec set_error_handler nous donnes un résultat beaucoup plus jolie, et évite beaucoup d'ennuies Smiley smile

Désolé d'être un peu HS, une parenthèse truc et astuce Smiley confused
:)
Moi je pense que Bison a raison à propos du JS.

Moi quand je désactive le JS je m'en rends vite compte car on se retrouve vite à ne plus pouvoir ouvrir des liens, ect. Ça devient impossible de surfer.
Et de plus, je ne connais absolument personne à par moi, qui ai au moins conscience qu'on puisse le désactiver.
(les 10 % faut qu'on m'explique où ils sont et comment il font)

Après c'est vrai qu'une petite vérif côté client ne peut pas faire de mal.
De ce côté là vous m'avais convaincu.

Je ne cherche pas à faire le site parfait.
Je voudrais bien mais je n'ai malheureusement pas le temps, la question des standards et de l'accessibilité est intéressante mais malheureusement tellement complexe.
Je me contente de faire des page valide XHTML et CSS et encore je ne tient pas compte des avertissements.

Par contre je suis très intéressé par le fait de prendre de bonne habitude de programmation. Car je sais que l'on peut gagner du temps grâce à celà.
Le temps c'est de l'or, c'est moi qui vous le dit...

Ça sert à rien mais : Désolé pour les diverses fautes de français que je sème sur ce forum (faut que je révise).
Modifié par fodjio (27 Oct 2006 - 09:18)
Hip,

La désactivation du js est un des sujets préféré du développeur.

Je fais du web depuis un bon moment déjà et croyez-moi :
- aucun de mes clients n'a conscience que le navigateur offre des options telles que la désactivation de ceci ou de cela, la mise en place de ceci ou de cela, bref... ils ignorent totalement comment fonctionne leur bécane !
Si... ils savent où se trouve le bouton pour l'allumer. Smiley langue

Tous mes clients n'utilisent que Firefox... uniquement parce que je leur ai installé et que j'ai passé 1 heure avec chacun pour leur montrer la facilité d'emploi. (Idem pour thunderbird.)

On est tous des convaincus ici et pourtant...
Je précise pour les incultes, que "des convaincus" ne signifie pas "une bande d'imbéciles ayant perdu une bataille"

Donc, disais-je, en dehors de notre cercle restreint de DEV, je pense que le monde s'en fout royalement de la désactivation du js... et ça, c'est une réalité, pas un mythe.
Essayer de faire bouger les choses, je veux bien, mais se focaliser sur un simple history.back() c'est un peu idiot.

J'admet néanmoins que je devrais faire un effort pour passer au-dessus.
D'ailleurs je l'ai fait... le code est prêt. Smiley smile
Quelques tests encore, un petit nettoyage de la "Sainte Axe" et je le mettrais en ligne cet aprème Smiley langue
Administrateur
Tiens, et si on commençait par se ficher des stats (qui de toute façon ne veulent rien dire) et simplement penser que JavaScript est et doit demeurer une option. Parfois très utile et agréable, certes, mais une option quand-même.

A partir de là, on proposera des choses accessibles à tous, sans JS, et des apports ergonomiques optionnels souvent très performants grâce à ce bel outil qu'est JS.

A lire jusqu'au bout si possible : Pourquoi certains n'activent pas JavaScript ?
Le tout est de ne pas être extrêmiste, ni dans un sens, ni dans l'autre Smiley cligne
Modifié par Raphael (27 Oct 2006 - 11:42)
Raphael a écrit :
Le tout est de ne pas être extrêmiste, ni dans un sens, ni dans l'autre Smiley cligne
Je ne peux qu'être d'accord avec toi..., même si... Smiley langue
Bison a écrit :
le monde s'en fout royalement de la désactivation du js... et ça, c'est une réalité, pas un mythe.
[...]
Essayer de faire bouger les choses, je veux bien, mais se focaliser sur un simple history.back() c'est un peu idiot.

Ton pseudo, tu le portes à merveille, t'as vraiment la tête dure. Smiley biggol

Raphael a écrit :
A partir de là, on proposera des choses accessibles à tous, sans JS, et des apports ergonomiques optionnels souvent très performants grâce à ce bel outil qu'est JS.

Excellente synthèse du problème Smiley smile
SuD a écrit :
Ton pseudo, tu le portes à merveille, t'as vraiment la tête dure. Smiley biggol

En fait Bison, c'était mon totem lorsque j'étais scout... Smiley smile

Tu crois que c'est ça... ou c'est à cause de mon prénom breton ?
Smiley biggrin Smiley langue
Bison a écrit :

En fait Bison, c'était mon totem lorsque j'étais scout... Smiley smile
Tu crois que c'est ça... ou c'est à cause de mon prénom breton ?
Smiley biggrin Smiley langue


J'ai pas un prénom breton bien que très proche du tiens (Yvan)... par contre moi je suis breton... ça doit cette origine commune qui fait qu'on ne lache pas le morceau chacun de notre côté Smiley smile
Modifié par SuD (27 Oct 2006 - 14:22)
Pages :