Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Forcer une zone de formulaire a rester vide...

12 réponses
Avatar
Josselin
Salut

j'ai une zone de formulaire qui permet à un visiteur d'entrer un numéro
de msg (donnée par une image) pour éviter le spamming...
Si une erreur est détectée dans le formulaire, celui-ci est affiché de
nouveau, le numéro aléatoire est modifié (heureusement...) mais si la
navigateur de l'utilisateur le permet, l'ancien numéro reste dans la
zone de saisie.... pas trop grave, mais par manque d'attention , il
pourrait ne pas être modifié par l'utilisateur..... comment forcer la
zone à vide à l'affichage... et biaiser le navigateur ?

merci

Joss

10 réponses

1 2
Avatar
Olivier Miakinen

j'ai une zone de formulaire qui permet à un visiteur d'entrer un numéro
de msg (donnée par une image) pour éviter le spamming...
Si une erreur est détectée dans le formulaire, celui-ci est affiché de
nouveau, le numéro aléatoire est modifié (heureusement...)


Pourquoi heureusement ? Ne pourrais-tu pas garder le même numéro
jusqu'à ce qu'une action soit réellement effectuée, ce qui éviterait
à l'utilisateur de devoir s'esquinter les yeux N fois quand tes
contraintes sont plus fortes que ce qu'il imagine ?

mais si la
navigateur de l'utilisateur le permet, l'ancien numéro reste dans la
zone de saisie.... pas trop grave, mais par manque d'attention , il
pourrait ne pas être modifié par l'utilisateur.....


Ce n'est en effet pas si grave que ça : s'il a vraiment envie de remplir
ce formulaire, il pestera après toi, mais il recommencera bravement. Si
au contraire il n'y tient pas tant que ça, le simple fait de devoir lire
plus d'une fois un code tordu devrait l'avoir déjà dissuadé de continuer.
;-)

comment forcer la
zone à vide à l'affichage... et biaiser le navigateur ?


En PHP : changer le nom des champs de saisie, de façon aléatoire là encore.

Sinon, tu peux aussi rajouter une fonction JavaScript qui fera le
ménage une fois la page affichée.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
SK Lurk
En PHP : changer le nom des champs de saisie, de façon aléatoire là
encore.


Sinon, tu peux aussi rajouter une fonction JavaScript qui fera le
ménage une fois la page affichée.



Voir aussi :
http://www.iac-studio.com/article17.html

SKL

Avatar
Olivier Miakinen
[ article initialement dans fr.comp.lang.php, copie dans fciw.auteurs,
copie avec suivi dans fr.comp.lang.javascript ]

Bonjour,

Faisant suivre la discussion dans d'autres groupes, je recopie la
question initiale de Josselin :

j'ai une zone de formulaire qui permet à un visiteur d'entrer un numéro
de msg (donnée par une image) pour éviter le spamming...
Si une erreur est détectée dans le formulaire, celui-ci est affiché de
nouveau, le numéro aléatoire est modifié (heureusement...) mais si la
navigateur de l'utilisateur le permet, l'ancien numéro reste dans la
zone de saisie.... pas trop grave, mais par manque d'attention , il
pourrait ne pas être modifié par l'utilisateur..... comment forcer la
zone à vide à l'affichage... et biaiser le navigateur ?


J'avais répondu :

En PHP : changer le nom des champs de saisie, de façon aléatoire là encore.

Sinon, tu peux aussi rajouter une fonction JavaScript qui fera le
ménage une fois la page affichée.


SK Lurk a renchéri :

Voir aussi :
http://www.iac-studio.com/article17.html


Je n'ai pas testé cette « méthode claire, discrète et équitable »
proposée par iac-studio, mais en lisant le code j'ai l'impression
qu'ils se contentent de faire une bidouille pour empêcher le validateur
de râler à propos d'une syntaxe invalide (et probablement reconnue par
certains navigateurs uniquement).

Qu'en pensez-vous ?

Avatar
ASM

Si une erreur est détectée dans le formulaire, celui-ci est affiché de
nouveau, le numéro aléatoire est modifié (heureusement...) mais si la
navigateur de l'utilisateur le permet, l'ancien numéro reste dans la
zone de saisie.... pas trop grave, mais par manque d'attention , il
pourrait ne pas être modifié par l'utilisateur..... comment forcer la
zone à vide à l'affichage... et biaiser le navigateur ?



J'avais répondu :

En PHP : changer le nom des champs de saisie, de façon aléatoire là encore.



on peut aussi bidouiller l'url pour faire croire au navigateur
qu'on lui demande autre chose

monform.php#fausse_ancre_1
monform.php#fausse_ancre_2
monform.php#fausse_ancre_etc

Sinon, tu peux aussi rajouter une fonction JavaScript qui fera le
ménage une fois la page affichée.



ou :

Numero de SS : <input onclick="this.value='';" blabla />

ou :

<form name="pass" blabla>
Numero de SS : <input name='num_ss';" blabla />
<script type="text/javascript">
document.forms['pass'].num_ss.value='';
</script>

SK Lurk a renchéri :

Voir aussi :
http://www.iac-studio.com/article17.html



Je n'ai pas testé cette « méthode claire, discrète et équitable »
proposée par iac-studio, mais en lisant le code j'ai l'impression
qu'ils se contentent de faire une bidouille pour empêcher le validateur
de râler à propos d'une syntaxe invalide (et probablement reconnue par
certains navigateurs uniquement).

Qu'en pensez-vous ?


Qu'à utiliser du JS autant le faire pour ce qu'on veut
et, si on utilise l'artifice proposé :

<script language="JavaScript" type="text/javascript">

if(document.getElementsByTagName){
var inputElements = document.getElementsByTagName("input");
for (i=0; inputElements[i]; i++)
if (inputElements[i].className &&
inputElements[i].className == "disableAutoComplete")
inputElements[i].value = '';
}
}
else // pour tous navigateurs et sans s'embarrasser de classes
var inputElements = forms['pass'].elements;
for(var i=0;i<inputElements.length;i++)
if(inputElements[i].type=='text')
inputElements[i].value='';

</script>

en plus, sont fatiguants avec ttes leurs z'accolades

et avec seulement la suite du else ça devrait suffire.

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Sébastien
[ article initialement dans fr.comp.lang.php, copie dans fciw.auteurs,
copie avec suivi dans fr.comp.lang.javascript ]

http://www.iac-studio.com/article17.html



Je n'ai pas testé cette « méthode claire, discrète et équitable »
proposée par iac-studio, mais en lisant le code j'ai l'impression
qu'ils se contentent de faire une bidouille pour empêcher le validateur
de râler à propos d'une syntaxe invalide (et probablement reconnue par
certains navigateurs uniquement).

Qu'en pensez-vous ?


Salut Olivier,

Première erreur de validation
<script *language="JavaScript"* type="text/javascript">
Il n'existe pas d'attribut "language" pour l'élément "script" en HTML.
(cf. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1)

Ensuite bien évidemment ils font toujours appel à l'attribut
"autocomplete" qui n'existe pas.

La page est donc toujours invalide (le DOM généré par JavaScript est
invalide dès l'ajout de cet attribut bidon à l'arbre du document) et de
plus toute la méthode repose sur un attribut qui ne sera que rarement
reconnu (qui utilise encore IE ;) ? ).

Pire, question sécurité / vie privée, un utilisateur malveillant n'a
qu'a désactiver JavaScript pour déjouer la pseudo-protection.

Mon avis personnel : C'est une arnaque, ce gens sont dangeureux
("Banques : protégez l'intimité, désactivez l'Autocomplétion avec du
HTML propre", mon oeil).

Sébastien


Avatar
Olivier Miakinen
Le 12/03/2006 01:58, Sébastien m'a répondu :

Qu'en pensez-vous ?


Première erreur de validation
[...]

La page est donc toujours invalide [...]

Pire, question sécurité / vie privée, [...]

Mon avis personnel : C'est une arnaque, ce gens sont dangeureux
("Banques : protégez l'intimité, désactivez l'Autocomplétion avec du
HTML propre", mon oeil).


Un grand merci pour la confirmation.


Avatar
Patrick Mevzek
Première erreur de validation
<script *language="JavaScript"* type="text/javascript">
Il n'existe pas d'attribut "language" pour l'élément "script" en HTML.
(cf. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1)


Cette URL indique justement que si, cet attribut existe, mais devrait
être remplacé par l'attributy type de nos jours (valeurs différentes
cependant)

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

Avatar
YD
Ensuite bien évidemment ils font toujours appel à l'attribut
"autocomplete" qui n'existe pas.


Qui n'est pas standard, plutôt.

La page est donc toujours invalide (le DOM généré par JavaScript est
invalide dès l'ajout de cet attribut bidon à l'arbre du document) et de
plus toute la méthode repose sur un attribut qui ne sera que rarement
reconnu (qui utilise encore IE ;) ? ).


En quoi l'ajout d'une propriété JavaScript rend-elle invalide le DOM ?
Le DOM précise (entre autres) les propriétés et méthodes qui *doivent*
être implémentées mais je n'ai pas lu que cette liste était limitative,
et encore moins que les encapsulations que JS fait des objets DOM soit
susceptibles de le casser.

Personnellement, j'aurais plutôt choisi de tester l'existence de cet
attribut avant de le positionner :

if(inputElements[i].autocomplete) inputElements[i].autocomplete="off";

Pire, question sécurité / vie privée, un utilisateur malveillant n'a
qu'a désactiver JavaScript pour déjouer la pseudo-protection.

Mon avis personnel : C'est une arnaque, ce gens sont dangeureux
("Banques : protégez l'intimité, désactivez l'Autocomplétion avec du
HTML propre", mon oeil).


Là j'approuve !

--
Y.D.

Avatar
YD
<script *language="JavaScript"* type="text/javascript">
Il n'existe pas d'attribut "language" pour l'élément "script" en HTML.
(cf. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1)


Cette URL indique justement que si, cet attribut existe, mais devrait
être remplacé par l'attributy type de nos jours (valeurs différentes
cependant)


Un coup d'oeil dans la DTD montre que cet attribut est licite en
Transitional et Frameset, mais n'existe pas en Strict. Tout dépend
donc du Doctype déclaré.

--
Y.D.


Avatar
Sébastien

Première erreur de validation
<script *language="JavaScript"* type="text/javascript">
Il n'existe pas d'attribut "language" pour l'élément "script" en HTML.
(cf. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1)



Cette URL indique justement que si, cet attribut existe, mais devrait
être remplacé par l'attributy type de nos jours (valeurs différentes
cependant)



Autant pour moi, je suis trop habitué à utiliser des DOCTYPE strictes,
en HTML ou XHTML.

Quoiqu'il en soit il me semble être une très mauvaise pratique
d'utiliser des attributs deprecated.

Sébastien


1 2