PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-11-2009 23:34:00

seb84450
Membre
Inscription : 19-11-2009
Messages : 2

Système anti-spam dans un formulaire

Bonjour à tous,

je débute en php et java et j'ai déjà un soucis.
Je m'occupe du site d'une association sportive et j'ai mis en place un formulaire d'inscription en javascript (oui à l'époque je ne m'étais pas encore attaqué au php) qui marchait très bien mais depuis quelques temps, je reçois beaucoup de spam automatique par ce lien.
J'ai donc essayé de mettre en place une petite vérification simple sous la forme d'une opération à faire et entrer le résultat dans une case. Mon script doit vérifier le résultat et s'il est faux, renvoyer une erreur et demander de retaper le résultat.
Le problèmeest que si c'est faux, le script fait ce qui est demandé mais si le résultat est juste, le script renvoi aussi une erreur et le formulaire ne peut donc pas s'envoyer. Je vous mets le code de mon script de vérification ci-dessous au cas où quelqu'un pouvez éclairer ma lanterne. L'opération demandé correspond au champ9 et est "combien fait 8 fois 7?"

Merci

<script language="JavaScript
function verifSelection()
{if (mail_form.champ1.value == "
") {
alert("
Veuillez entrer votre nom")
return false
} if (mail_form.champ2.value == "
") {
alert("
Veuillez entrer votre prénom")
return false
} if (mail_form.champ3.value == "
") {
alert("
Veuillez entrer votre N° de licence")
return false
} if (mail_form.champ4.value == "
") {
alert("
Veuillez entrer votre classement")
return false
} if (mail_form.champ5.value == "
") {
alert("
Veuillez entrer la  ou les catégories pour la(les)quelle(s) vous souhaitez vous inscrire ")
return false
} if (mail_form.champ6.value == "
") {
alert("
Veuillez entrer votre année de naissance")
return false
} if (mail_form.champ7.value == "
") {
alert("
Veuillez entrer votre club")
return false
} if (mail_form.champ8.value == "
") {
alert("
Veuillez entrer votre numéro de téléphone")
return false
} if (mail_form.zone_email.value== "
") {
alert("
Merci de spécifier votre adresse mail pour l'envoi de la confirmation de l'inscription")
return false
} if (mail_form.zone_texte.value == "
") {
alert("
Veuillez entrer vos disponibilités le plus précisément possible")
return false
} if (mail_form.champ9 != "
56") {
alert("
Veuillez entrer le résultat de vérification anti-spam dans la case")
return false
} }
</script>

PS: si quelqu'un a une idée ou pouvez m'aider à faire que cette fonction de vérification soit essentiellement en php, il est le bienvenu.

Dernière modification par seb84450 (19-11-2009 23:47:56)

Hors ligne

#2 20-11-2009 06:56:54

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Système anti-spam dans un formulaire

En javascript ce n'est pas du tout sécurisé, il suffit de regarder ton code pour avoir la réponse. ^_^
Voici la méthode en PHP :

<?php
if($_POST['champ9'] != 56){
    echo"Veuillez entrer le résultat de vérification anti-spam dans la case.";
    $erreur++;
}

if( $erreur != 0 ){
  //On réaffiche le formulaire
}else{
  //Ton traitement
}
?>

Saches que dans tous les cas il faut toujours vérifier en PHP et ce même si tu vérifies en javascript, le javascript peut très bien être désactivé par ton visiteur.

Dernière modification par xTG (20-11-2009 06:57:07)

Hors ligne

#3 20-11-2009 12:08:08

seb84450
Membre
Inscription : 19-11-2009
Messages : 2

Re : Système anti-spam dans un formulaire

Effectivement je n'avais pas pensé au fait que le javascript pouvait être désactivé. Je vais donc essayer de faire une nouvelle version de mavérification en php.

Si j'ai bien compris, il faudrait pour chaque ligne de vérification recopiez le code en changeant simplement le nom du champ et en mettant, à la fin, la ligne


if( $erreur != 0 ){
}else{
// traitement de l'envoi
}
?>
 

Par contre, comment lui faire réafficher le formulaire ou demander le traitement par l'envoi avec la méthode post que j'utilise?

Dernière modification par seb84450 (20-11-2009 12:09:07)

Hors ligne

#4 20-11-2009 12:23:52

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Système anti-spam dans un formulaire

<?php
if( isSet($_POST['posté']) ){
   if( test_arg1 == false )$erreur++;
   if( test_arg2 == false)$erreur++;
}
if( !isSet($_POST['posté'] || $erreur != 0 ){
//Affichage forumlaire
}
?>

En gros tu test les valeurs que si le formulaire a été posté (le champ posté est un champs de type hidden dans mon exemple) et le formulaire ne s'affiche que s'il n'a pas été posté ou si tu as des erreurs.

Hors ligne

Pied de page des forums