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

petit problème de formulaire

34 réponses
Avatar
docanski
Bonjour la foule !

Voui, je sais, je suis un peu (beaucoup) HS sur ce coup mais je crois
que ça ne vaut pas vraiment la peine de m'abonner à un groupe où je suis
largué depuis un bout de temps (la vieillesse, quoi ...) pour poser une
question ponctuelle.
Je me lance donc ... :
il s'agit d'ajouter une condition dans un petit JS destiné à un
formulaire ... et j'y arrive plus :-(.
En l'occurrence, je voudrais *exclure* la possibilité d'inscription de
faux membres soumettant des adresses email "exotiques" généralement
génératrices de spam, du genre xxxxxxx@xxxxx.ru ou xxxxxxx@xxxxx.uk,
etc ...
Ce sont donc les extensions de ces adresses que je vise.
Mon script se présente actuellement comme suit :

<script type="text/javascript">
<!--
function process_form(the_form)
{
var element_names = new Object()
element_names["req_username"] = "Nom d\'utilisateur"
element_names["req_password1"] = "Mot de passe"
element_names["req_password2"] = "Confirmez votre mot de passe"
element_names["req_email1"] = "Courriel"
element_names["req_email2"] = "Courriel 2"

if (document.all || document.getElementById)
{
for (i = 0; i < the_form.length; ++i)
{
var elem = the_form.elements[i]
if (elem.name && elem.name.substring(0, 4) == "req_")
{
if (elem.type && (elem.type=="text" || elem.type=="textarea" ||
elem.type=="password" || elem.type=="file") && elem.value=='')
{
alert("\"" + element_names[elem.name] + "\" est un champ requis
pour ce formulaire.")
elem.focus()
return false
}
}
}
}

return true
}
// -->

Quelqu'un peut m'offrir le bout de code kivabien ?

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/

10 réponses

1 2 3 4
Avatar
Olivier Miakinen
Le 02/10/2008 23:38, docanski a écrit :

Il s'agit d'adresses Email du genre "" ou encore
"" .
En principe, seuls des visiteurs d'expression francophone (plus rarement
italienne) sont susceptibles de vouloir s'inscrire pour obtenir un
accès, le contenu de celui-ci étant francophone.



Je connais un certain nombre de Russes et d'habitants du Royaume-Uni qui
parlent parfaitement bien le français. Et aussi des francophones qui
habitent dans des pays non francophones et ont une adresse du pays.

Le but de la manoeuvre est de bloquer toute possibilité d'introduire de
telles adresses Email dans la base de données.



Parce que sinon elle va exploser ? Tu crains l'infiltration d'adresses
terroristes ? ;-)

Il n'est donc pas prévu
de faire un suivi par envoi de courriel. Le principe est de renvoyer un
mot de passe aléatoire à la seule condition que l'adresse Email soit valide.



Joli, tu viens d'exprimer une superbe contradiction en seulement deux
phrases.

Le *seul* moyen de savoir si une adresse de courriel est valide, c'est
d'y envoyer un courriel et d'attendre la confirmation que celui qui a
reçu le courriel est bien celui qui veut s'inscrire.

Si tu persistes dans ton idée, l'effet pervers sera que celui dont
l'adresse se termine vraiment par .ru ou .uk abandonnera l'idée de
s'inscrire, en te maudissant, tandis que le spammeur choisira au hasard
une adresse en yahoo.com qui ne lui appartient pas, mettons par exemple
, pour s'inscrire sans être embêté.

Je pense qu'il suffit alors de bloquer toute possibilité d'inscription
au moment de la saisie des données.



Non.

Ai-je tort ?



[OUI]

http://faqfclphp.free.fr/#rub5.3
Avatar
Sergio
docanski vient de nous annoncer :

Si tu veux éviter ce genre d'inscription de spammeurs, la *première* chose
à faire, c'est de faire faire le contrôle par le serveur (langage de ton
choix), et non en javascript par le client :
En général, ce genre de parasite s'inscrivent à l'aide de robots, qui se
fichent comme une guigne des scripts javascripts !



C'est bien ce que je pensais mais si le peu de connaissances que j'avais pu
assimiler pour créer mes propres JS il y a une dizaine d'année se sont
embrumées au cours des ans, je n'ai jamais eu le temps de me pencher vraiment
sur une autre écriture de code, notamment en PHP qui semble la meilleure
solution.
Le formulaire en question est évidemment traité dans ce langage mais ... quel
code ajouter pour faire ce que je veux ? Voici la partie de la page qui
traite l'enregistrement d'un nouveau membre :

<form id="register" method="post" action="register.php?action=register"
onsubmit="this.register.disabled=true;if(process_form(this)){return
true;}else{this.register.disabledúlse;return false;}">



Tout doit se faire dans "register.php".

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Sergio
docanski a émis l'idée suivante :

La première chose, ce serait de savoir précisément ce que tu veux. Je
n'ai pas compris ce que tu reprochais au code de SAM quand il teste
des noms de domaine de premier niveau alors que tu voulais apparemment
refuser des noms de domaine de premier niveau. Surtout, je ne sais pas
ce que tu appelles « extensions des origines géographiques des adresses
Email ».



Il s'agit d'adresses Email du genre "" ou encore
"" .
En principe, seuls des visiteurs d'expression francophone (plus rarement
italienne) sont susceptibles de vouloir s'inscrire pour obtenir un accès, le
contenu de celui-ci étant francophone.



Il y a des francophones en Russie et en Angleterre. Sans parler des
expatriés.

Pas plus tard qu'hier, sur un de mes sites qui n'intéresse a priori que
les francophones, j'ai reçu un message (pertinent) d'un japonais (et
adresse en .jp).

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Olivier Miakinen ecrit ce qui suit en ce 03.10.2008 00:33 :

Parce que sinon elle va exploser ? Tu crains l'infiltration d'adresses
terroristes ? ;-)



Noooon ! :-) L'acceptation (par le script de traitement du formulaire)
de l'inscription permet l'accès à la publication de messages sur un
forum et c'est pour éviter une pollution de ce forum que je veux en
éliminer *automatiquement* les indésirables.

Il n'est donc pas prévu
de faire un suivi par envoi de courriel. Le principe est de renvoyer un
mot de passe aléatoire à la seule condition que l'adresse Email soit valide.



Joli, tu viens d'exprimer une superbe contradiction en seulement deux
phrases.



Mêêêênon ! Peut-être me suis-je mal exprimé ? Le script doit *bloquer*
toute tentative d'inscription et il ne doit donc pas poursuive le
traitement dès qu'une des extensions indésirables est détectée.
Il n'y aurait donc dans ce cas aucune tentative de vérification de la
validité d'email par un envoi à partir du serveur.
Et donc, le moteur spammeur ne pourrait aller plus loin, restant
toujours sur une page qui ignorera sa tentative d'inscription.

Si tu persistes dans ton idée, l'effet pervers sera que celui dont
l'adresse se termine vraiment par .ru ou .uk abandonnera l'idée de
s'inscrire, en te maudissant,



Ou essayera de me contacter par l'intermédiaire d'un autre formulaire.
Ainsi, l'inscription ne sera pas *automatique* mais dépendra du contrôle
que je pourrai faire.
S'il ne le fait pas, tant pis, j'en prends le risque.
Et puis, cette possibilité est plus que très peu probable.

tandis que le spammeur choisira au hasard
une adresse en yahoo.com qui ne lui appartient pas, mettons par exemple
, pour s'inscrire sans être embêté.



Arrêtes ! tu vas faire spammer une de mes Bal ! ;-) (t'es pas passé
loin, en tout cas !)
Blague à part, un robot peut-il arriver à obtenir de telles adresses ou
à *constater* par ses tentatives qui n'aboutissent pas qu'il doit tenter
l'inscription par une adresse de ce genre ?
Je peux me tromper mais je crois que le fait de rester *bloqué* sur la
page d'inscription ne lui permettra pas d'en comprendre la raison
puisqu'il n'y aura aucune réaction. Il passerait ainsi son chemin ...
Non ?

Je pense qu'il suffit alors de bloquer toute possibilité d'inscription
au moment de la saisie des données.



Non.

Ai-je tort ?



[OUI]



Malgré mes précisions qui précèdent ?

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/
Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
SAM ecrit ce qui suit en ce 03.10.2008 10:56 :

Mais ... en quoi une adresse n'est pas valide ?
Kesskizont les Russes ? que t'ont-ils fait ?



Ils ont exterminé la totalité de ma famille, en Pologne, il y a bien
longtemps.
Mébon, ceux d'aujourd'hui n'en sont pas responsables et ce n'est pas la
raison pour laquelle je vise ces extensions. Elles trouvent leur origine
dans le fait que les quelques spams déjà reçus par l'intermédiaire du
formulaire en question sont 3 fois sur 4 de cette origine.

Peut-être as-tu tord de bloquer sur une provenance régionale ?



Le risque est faible, voir ma réponse à Olivier.

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/
Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Sergio ecrit ce qui suit en ce 03.10.2008 09:21 :

Tout doit se faire dans "register.php".



Et donc au niveau de la partie du script de traitement que j'ai
reproduite dans mon message du 2/10 à 20h37.
Mais je sais pas faire ... :-(

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/
Avatar
SAM
Le 10/3/08 12:38 PM, docanski a écrit :
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
SAM ecrit ce qui suit en ce 03.10.2008 10:56 :

Mais ... en quoi une adresse n'est pas valide ?
Kesskizont les Russes ? que t'ont-ils fait ?



Ils ont exterminé la totalité de ma famille, en Pologne, il y a bien
longtemps.



Ha! Oui, quand même !

Peut-être as-tu tord de bloquer sur une provenance régionale ?



Le risque est faible, voir ma réponse à Olivier.



Bon, ne reste donc plus qu'à verser sur le ng PHP.

J'imagine qu'on doit pouvoir y faire comme en javascript un test en
expression régulière des suffixes autorisés ?
(ou de ceux rejetés ... la méthode est la même)

dans le genre :

$url = $_POST['email'];
$accepte = "/.(fr|com|org|eu|gouv)$/";
if( ereg ( $accepte , $url ) )
inscriptionOK();


ou :

$url = $_POST['email'];
$acceptePas = "/.(uk|ru|sp|it|tk)$/";
if( ereg ( $acceptePas , $url ) == false)
inscriptionOK();

--
sm
Avatar
Olivier Miakinen
Le 02/10/2008 23:47, docanski m'a répondu :

Et finalement, non. Non seulement tu n'utilises pas document.all, ce qui
est assez normal, mais tu n'utilises pas document.getElementById() non
plus. Pourquoi alors avoir testé leur présence ? Surtout, pourquoi ne
rien faire quand ils n'existent ni l'un ni l'autre, puisque tu n'en as
pas besoin ?



Le contrôle passe par :

<form id="register" method="post" action="register.php?action=register"
onsubmit="this.register.disabled=true;if(process_form(this)){return
true;}else{this.register.disabledúlse;return false;}">



C'est bien ce que je disais : aucune trace de document.all ou de
document.getElementById là dedans.
Avatar
Olivier Miakinen
Le 03/10/2008 12:30, docanski a écrit :

Parce que sinon elle va exploser ? Tu crains l'infiltration d'adresses
terroristes ? ;-)



Noooon ! :-) L'acceptation (par le script de traitement du formulaire)
de l'inscription permet l'accès à la publication de messages sur un
forum et c'est pour éviter une pollution de ce forum que je veux en
éliminer *automatiquement* les indésirables.



J'ai bien compris le but, mais je reste en désaccord avec la solution,
qui n'en est pas une : tu risques de décourager des visiteurs honnêtes,
sans efficacité réelle contre le spam.

La meilleure solution que je te propose, c'est de demander aux visiteurs
qu'ils saisissent dans un champ la réponse à la question « combien font
2+2 », et que *en PHP* tu vérifies que la réponse est bien "4". Si un
jour tu t'aperçois que des spams passent quand même, tu remplaceras la
question par « combien font 2×3 », ou bien dès le départ tu prévois
quelques questions de base.
Avatar
SAM
Le 10/3/08 12:41 PM, docanski a écrit :
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Sergio ecrit ce qui suit en ce 03.10.2008 09:21 :

Tout doit se faire dans "register.php".



Et donc au niveau de la partie du script de traitement que j'ai
reproduite dans mon message du 2/10 à 20h37.
Mais je sais pas faire ... :-(



$passl = $_POST['eq_password1'];
$pass2 = $_POST['eq_password2'];

$email = $_POST['req_email1'];
$emai2 = $_POST['req_email2'];

$acceptePas = "/.(uk|ru|sp|it|tk)$/";

if( eregi ( $acceptePas , $url ) == false) {
if( ($email1 != $email2) || ($rpass1 != $pass2) /* etc etc */ )
include('ceFormulaire.php');
else
include('formulaire_suite.inc');
}


<http://fr.php.net/manual/fr/function.eregi.php>


--
sm
1 2 3 4