Webmaster Hub: Créer un formulaire de contact php anti-spam (captcha) - Webmaster Hub

Aller au contenu

  • 6 Pages +
  • « Première
  • 2
  • 3
  • 4
  • 5
  • 6
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Créer un formulaire de contact php anti-spam (captcha) Noter : -----

#61 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 19 février 2007 - 23:31

Je suis en train d'installer le script contact.php de alphega avec cryptographp. Cependant, je souhaiterais développer un formulaire avec davantage de champs que "message".

Je bute sur la ligne d'envoi du mail :

if (@mail($email_webmaster,$_POST["titre"],$_POST["message"
],$entete)){


J'ai réussi à ajouter un "message2" (avec un champ textarea associé et en doublant $_POST["message"] avec $_POST["message2"]) et ça passe niveau mail. Cependant, je n'arrive pas aller au-delà.

Dans mon formulaire je voudrais les champs : Nom, Prénom, Fonction, Téléphone (en text) et Adresse (en textarea). Comment faire pour envoyer par mail toutes ces variables ?

De plus, comment envoyer aussi des chaînes d'intitulés, pour recevoir mon mail avec, par exemple :

Nom : Dupont
Prénom : Jean
Téléphone : 05 00 00 00 00 00

et ainsi de suite...

Peut-on concaténer tout ça dans une seule variable "message" y compris les retours à la ligne ? Et comment ?

Je ne suis pas connaisseur en PHP, mais je chipote le code...

Merci pour éventuelle réponse.
0

#62 L'utilisateur est hors-ligne   alphega 

  • Groupe : Hubmaster
  • Messages : 277
  • Inscrit(e) : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 19 février 2007 - 23:45

Bonjour,

Vous avez de la chance car je ne m'y connais pas énormément mais j'ai juste trouvé comment faire ceci il y a 3 jours lorsque j'ai eu besoin de rajouter un champ, plus exactement, dans mon cas, l'envoi d'un pseudo.

Ca vous aidera certainement pour ce que vous souhaitez obtenir. Voici ce que j'ai fait:

1- Rajout du champ pseudo (les parties rajoutées sont en gras):

Citation

<p><label for="titre">Titre de message (facultatif):</label><br />
<input type="text" size="50" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="titre">Votre pseudo (facultatif):</label><br />
<input type="text" size="50" name="pseudo" id="pseudo" value="<?php
if (!empty($_POST["pseudo"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["pseudo"],ENT_QUOTES);
}
?>" />
</p>

<p><label for="message">Message (obligatoire):</label><br />
<textarea name="message" id="message" cols="60" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?></textarea>
</p>



2- Récupération du pseudo dans "$message" et aussi de l'ip, du referer et de l'agent utilisateur grace au message précédent de "bed" que j'ai modifié car ça ne fonctionnait pas (les modifs sont en gras également):

Citation

// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "Return-Path: ". $email_webmaster . "\n";
$entete .= "MIME-Version: 1.0";
$message="Provenance: ". $_SERVER['HTTP_REFERER'] . "\n";
$message.="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . "\n";
$message.="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n";
$message.="Pseudo: ". $_POST["pseudo"] . "\n\n";


3- envoi du message:

Citation

if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$message.$_POST["message"],$entete)){
// mail envoyé


J'ai réussi ceci en observant un peu les messages de tout le monde encore une fois.
Merci à tous d'ailleurs, j'ai maintenant un formulaire super complet avec un captcha accessible, ip du posteur etc... ;)
Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique CNET
0

#63 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 20 février 2007 - 08:32

Un grand merci, ça va aussi m'être d'une grande aide, bravo :thumbsup:

Je vais tester ça dans la journée.
0

#64 L'utilisateur est hors-ligne   H2V 

  • Groupe : Membre
  • Messages : 9
  • Inscrit(e) : 27-avril 06

Posté 20 février 2007 - 09:22

Testé et plus qu'approuvé ! :thumbsup:

Un GRAND merci alphega ! :)
0

#65 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 21 février 2007 - 00:40

Oui, merci alphega pour cette superbe amélioration. J'ai eu un sale ralentissement php chez mon fournisseur dans la journée, mais ce soir ça roule et ton script fait des merveilles :P

J'ai aussi fait des petites améliorations et je vais faire un peu de didactique pour les newbees qui passeraient par là (étant donné la position sur Google, doit y avoir du monde).

Donc... A partir du scrypt de base de alphega que l'on trouve en page 1 de cette série de posts, pour ajouter des champs de formulaire il suffit de répliquer le morceau de script suivant dans la page html autant de fois que de champs nécessaires et voulus. Le morceau en question :

<label for="nom">Item :</label></td>
<td ><input type="text" size="60" name="item" id="item" value="<?php
if (!empty($_POST["item"])) {
// le item de l'expéditeur a été saisi : le réafficher
echo htmlspecialchars($_POST["item"],ENT_QUOTES);
}
?>" />


Vous remplacez "item" par ce dont vous avez besoin pour votre formulaire (nom, prenom, telephone, e-mail, etc.). ça c'est pour des champs text. Maintenant pour un textarea multiligne :


<label for="message">Message* :</label></td>		
<td ><textarea name="message" id="message" cols="45" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?></textarea>


Là j'ai laissé le nom de l'item "message", car généralement un champ textarea sert pour la partie "message" d'un formulaire. Mais vous pouvez y mettre ce que vous voulez bien entendu.

Ensuite, on passe aux contrôles de sécurité et validation. Dans la partie "haute" du script de alphega, celle qui se trouve au-dessus du code HTML (au dessus de "<!DOCTYPE html PUBLIC ..."), pour chaque champ de votre formulaire vous devez ajouter ceci :

if (isset($_POST["item"])) {
$_POST["item"]=trim(stripslashes($_POST["item"])
);
}


Je ne connais pas grand chose à PHP, mais je suppose (c'est "trim", qui me rappelle VBasic qui m'y fait penser), je suppose que ça enlève les slashes, voire les antislashes du contenu du champ, afin d'éviter le passage de codes malicieux par là. Enfin, alphega l'a mis, faut le mettre :wacko: Là encore, remplacer "item" par l'identité du champ en question (nom, prenom, telephone, etc.). Donc faire ça pour chaque champ de formulaire.

Ensuite, pour chaque champ obligatoire ajouter ceci :

if (empty($_POST["item"])) {
// le item est vide
$erreur="Saisissez votre item...";
}


Là, fastoche à comprendre, c'est pour obliger à remplir un champ avant d'envoyer le formulaire. Donc à n'utliser que pour les champs qui doivent être obligatoirement remplis (par exemple, l'adresse e-mail de l'expéditeur, qu'on puisse lui répondre).

A noter que pour les deux morceaux de scripts ci-dessus, il vaut mieux les mettre dans le même ordre que l'ordre des champs de formulaire dans la page.

A présent, retour en bas de page HTML, vers le code formulaire. La petite amélioration que j'ai ajoutée concerne le titre du message. En effet, un message de formulaire n'étant pas un e-mail à proprement parler, l'utilisateur se fout de mettre un titre. Par contre, le webmaster qui va recevoir le message voudrait bien recevoir des titres standardisés, qui lui disent aussitôt de quel formulaire de son site vient le message (par exemple, "Formulaire d'inscription", "Formulaire de commande", etc.). C'est pour cela que la variable titre n'est plus nourrie par un champ de formulaire, mais par une variable cachée (hidden) à laquelle l'utilisateur ne touche pas et qui est propre au formulaire. La voici, à placer juste sous la balise "<form method="post"..." :

<input type="hidden" id="titre" name="titre" value="Formulaire de contact">


Voilà, à la place de "Formulaire de contact" vous mettez ce que vous voulez et ça s'affichera dans le titre du mail que vous recevrez.

On arrive à la fin, dans la partie, tout en bas, du script pour envoyer le formulaire, je donne un exemple complet correspondant à un formulaire de contact avec nom, prénom, fonction, téléphone et message. En fait, on ajoute (ou retranche ou change) autant d'items que l'on veut.

$entete = "From : ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "MIME-Version: 1.0";
$message="Provenance : ". $_SERVER['HTTP_REFERER'] . "\n";
$message.="Adresse IP : ". $_SERVER['REMOTE_ADDR'] . "\n";
$message.="Navigateur : ". $_SERVER['HTTP_USER_AGENT'] . "\n";
$message.="Nom : ". $_POST["nom"] . "\n";
$message.="Prénom : ". $_POST["prenom"] . "\n";
$message.="Fonction : ". $_POST["fonction"] . "\n";
$message.="Téléphone : ". $_POST["telephone"] . "\n\n";
$message.="Message : ";
if (@mail($email_webmaster,$_POST["titre"],$message.$_POST[
"message"],$entete)){


Quelques explications pour ceux qui connaissent pas. Les "\n" sont des retours à la ligne qui s'effectueront dans le message mail que vous recevrez. "Nom : ", etc. sont des intitulés des informations transmises (par exemple, dans votre message vous verrez "Nom : Dupont"). A ce propos, j'ai ajouté en dernier "Message : ", ce qui donne un intitulé à la partie "message" du mail. Que c'est pas beau de fignoler comme ça :rolleyes:

Voilà, je reviendrais certainement lorsque je testerai les cases à cocher et les listes de sélection... A bientôt et merci à tous.
0

#66 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 21 février 2007 - 08:22

Désolé, dans les deux premiers codes ci-dessus il traîne des balises de table "</td><td >" à enlever (ou bien mettre <tr><td> au début et </td></tr> à la fin pour avoir deux belles cellules de tableau, à encadrer par <table></table> bien sûr !).
0

#67 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 21 février 2007 - 11:49

Me revoilà avec donc de nouveaux champs de formulaire. Tout d'abord des bouton radio (un seul choix possible). Pour faire ça je me suis inspiré du code donné par Norbert_404, ce qui donne :

Veuillez choisir :<br>
<input type="radio" name="choix" id="choix1" value="<?php echo htmlspecialchars("A");?>" checked /><label for="choix1">A</label> 
<input type="radio" name="choix" id="choix2" value="<?php echo htmlspecialchars("B");?>" /><label for="choix2">B</label> 
<input type="radio" name="choix" id="choix3" value="<?php echo htmlspecialchars("C");?>" /><label for="choix3">C</label>


Le visiteur a le choix dans cet exemple (à adapter bien sûr à vos besoins) entre 3 options : A, B ou C.
Vous remarquerez la fameuse balise <label> (qui renvoie à l'id du champ) que j'ai découverte grâce à alphega ( :wub: ) et qui renforce l'ergonomie d'un formulaire, car le visiteur, surtout dans le cas des boutons radio (ou les checkbox) n'a pas besoin de passer une épreuve de psychomotricité fine en visant le petit rond (ou la petite case), mais peut simplement cliquer sur le texte d'option qui voisine avec le bouton radio (pitié pour les mal voyants).

Concernant le formatage il n'y en a pas pour un bouton radio (comment passer un antislash par un bouton radio, hein ? A ce propos, le "stripslashes" c'est pour retirer les anti-slashes d'une chaîne de caractères). Pas non plus de test de remplissage (je suppose qu'on pourrait en faire un du style "au moins un choix doit être fait"), le plus simple étant de forcer un choix avec "checked" (j'ai, dans mon exemple, forcé l'option A), libre au visiteur de changer de choix.

Pour ce qui concerne l'envoi du formulaire, j'ai utilisé la ligne suivante :

$message.="Choix du visiteur : ". $_POST["choix"] . "\n";


tout simplement ! Et dans le message mail reçu j'obtiens bien A, B ou C en fonction du bouton coché par le visiteur.

Passons à une case à cocher. J'ai suivi le même principe, ce qui donne :

<input type="checkbox" name="acceptation" id="acceptation" value="<?php echo htmlspecialchars("Accepté");?>" /> <label for="acceptation">J'accepte</label>


Ici, le visiteur peut cocher une case d'acceptation (de ce que vous voulez). Toujours l'ergonomie <label>, voir ci-dessus. Pour l'envoi cela donne :

$message.="Acceptation par le visiteur : ". $_POST["acceptation"];


Ainsi, dans le mail reçu si pas coché y'a rien, sinon je vois "Accepté".

Enfin, à noter une petite modif de la ligne de commande "@mail", puisque dans mon formulaire il n'y a que des champs text, boutons radio et checkbox et plus de message, donc ceci :

if (@mail($email_webmaster,$_POST["titre"],$message.$_POST[
"message"],$entete)){


devient :

if (@mail($email_webmaster,$_POST["titre"],$message,$entete)
){


Au passage, dans le cas de l'utilisation du textarea "message" je suis d'ailleur en train de me demander si on ne peut pas tout simplement ajouter "message" dans $message et se passer ainsi d'envoyer $_POST["message"]. ça doit être possible, hein alphega ?

*******************************

Voilà, il me reste deux questions, pour alphega justement (ou un autre tout aussi performant...).

1) J'ai deux champs text pour une adresse e-mail et sa confirmation, donc je voudrais pouvoir insérer un test qui vérifie que "email_expediteur" est bien == à "re_email_expediteur" avec message d'erreur assorti, si ce n'est pas le cas.

2) concernant la case à cocher d'acceptation, là encore comment tester qu'elle est bien cochée et obliger cette coche pour l'envoi du formulaire ?

A vous de jouer ;)
0

#68 L'utilisateur est hors-ligne   alphega 

  • Groupe : Hubmaster
  • Messages : 277
  • Inscrit(e) : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 21 février 2007 - 15:21

Je ne suis pas assez calé pour te répondre à propos de ces modifications mais je suis sur qu'avec tout ce que compte le hub en bidouilleurs de haut vol, tu devrais trouver des réponses.

En tout cas merci pour ton récapitulatif car je crois que j'avais oublié le passage des "stripslashes" pour le rajout d'un champ :P
Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique CNET
0

#69 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 22 février 2007 - 09:24

Déjà une réponse concernant le test d'égalité entre deux variables (deux champs du formulaire donc).
Soit les deux champs à tester "email_expediteur" et "re_email_expediteur" (on demande au visiteur de ré-écrire son e-mail à l'identique, pour vérification). Le code de test est le suivant :

elseif (empty($_POST["email_expediteur"])) {
// l'e-mail est vide
$erreur="Saisissez votre e-mail...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z](
[-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"
])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["re_email_expediteur"])) {
// l'e-mail répétée est vide
$erreur="Re-saisissez votre e-mail...";
}
elseif ($_POST["email_expediteur"] !== $_POST["re_email_expediteur"]) {
// les e-mails ne sont pas identiques
$erreur="Re-saisissez votre e-mail à l'identique...";
}


Soit 4 tests :
  • vérifier que le premier champ e-mail contient quelque chose (pas vide)
  • dans ce cas vérifier sa validité (format xxx_AT_xxx)
  • vérifier que le deuxième champ e-mail contient quelque chose (pas vide)
  • et c'est là qu'apparaît le test d'égalité avec l'opérateur "!==" qui veut dire "différent" et si les deux adresses mail saisies sont différentes alors on renvoie le message d'erreur

Ce message a été modifié par dorjee - 22 février 2007 - 09:24.

0

#70 L'utilisateur est hors-ligne   H2V 

  • Groupe : Membre
  • Messages : 9
  • Inscrit(e) : 27-avril 06

Posté 22 février 2007 - 14:49

Bonjour
Je voulais vous remercier tous les 2 parce que
1/ j'ai appris beaucoup de choses
et
2/ grâce à vous j'ai réussi à mettre en place ce sacré formulaire qui me faisait tourner en bourique depuis quelques jours.

Reste plus qu'à le mettre en forme pour qu'il soit un peu plus sexy.

Merci encore.
H2V
0

#71 L'utilisateur est hors-ligne   OBIT 

  • Groupe : Email Invalide
  • Messages : 1
  • Inscrit(e) : 06-mars 07
  • Genre:Homme

Posté 06 mars 2007 - 08:01

:thumbsup: Bravo à tous - Je viens juste de m'inscrire sur Hub et en quelques heures j'ai pu mettre en place le formulaire. Je ne connais vraiment rien au développement et m'arrachais les cheveux pour savoir comment mettre en place un formulaire de contact.

Le votre est simple,
Le code est propre
et en plus vous avez vraiment bien réfléchi la sécurité.

Je suis étonné de ne pas trouver de démo de vos travaux alors j'ajoute un lien sur lequel je vais mettre le formulaire avec :

Chekbox
adresse ip
nom
e mail (dans l'entête + le message pour être à mon goût) :whistling:

J'ai choisi la méthode de calcul simple et efficace.

Notes :

- Malheureusement pour le calcul les résultats négatifs doivent obligatoirement être inscrits sous cette forme :
Ex : -6 et non - 6 Je conseille donc de prévenir les internautes.

- On pourrait compléter par l'envoi d'un mail de confirmation sympathique à l'expéditeur. (ce qui permet à l'internaute la vérification de validité de son mail...)

- Une extension (qu'on trouve peut-être ailleurs sur le site): une boite dialogue interne avec les clients pour les réponses (ex: Amen ou Xiti) avec alerte mail automatique à l'internaute - ça évite aux mails de se balader et de diminuer totalement les spams et messages abusifs.


Malheureusement, je ne connais rien au développement, je ne peux que lancer des idées...

Démo Formulaire
0

#72 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 06 mars 2007 - 11:55

Merci pour les remerciements !
Je posterai bientôt l'url du site sur lequel je travaille et où on verra les formulaires en question...
a+
0

#73 L'utilisateur est hors-ligne   adn 

  • ADN l'origine...
  • Groupe : Membre+
  • Messages : 1 102
  • Inscrit(e) : 24-janvier 04
  • Genre:Homme
  • Localisation:-40m
  • Société:ADN Création

Posté 19 mars 2007 - 09:43

Hello,

J'aime bien l'idée de l'addition que je viens d'implémenter :)
J'ai fait une variante de byc qui me semble plus simple. En fait, a la place de la fonction de décodage, je mets dans la value de l'input "asb" le resultat de l'opération passé à md5(). A la reception du formulaire je n'ai plus qu'a tester l'égalité

md5($asa) == $asb


Pour compliqué un peu on peut ajouter une valeur fixe au calcul.

Ce message a été modifié par adn - 19 mars 2007 - 09:44.

0

#74 L'utilisateur est hors-ligne   H2V 

  • Groupe : Membre
  • Messages : 9
  • Inscrit(e) : 27-avril 06

Posté 19 mars 2007 - 11:13

Hello

ayant reçu sur le weekend 63 spams dans ma boîte à lettres provenant de mes formulaires je viens de mettre le captcha de calcul de byc que je tiens à remercier.

@ adn : n'étant pas compétent je n'ai pas compris mais je suivrais vos discussions à ce propos.

Bonne journée
0

#75 L'utilisateur est hors-ligne   adn 

  • ADN l'origine...
  • Groupe : Membre+
  • Messages : 1 102
  • Inscrit(e) : 24-janvier 04
  • Genre:Homme
  • Localisation:-40m
  • Société:ADN Création

Posté 19 mars 2007 - 20:54

Hello,

Voici le code (noter que, j'ai limité l'opération a une addition):

<?
	$operateur = array("+", "-");
	$alpha = rand(1, 10);
	$op = rand(0, 0);
	$beta = rand(1, 10);
	$res = md5($alpha + $beta); // pour compliquer on peut ajouter une constante au calcul
?>
(Contre le spam) <? echo $alpha."&nbsp;".$operateur[$op]."&nbsp;".$beta."
&nbsp;=&nbsp;"; ?>
<input name="asa" type="text" size="10" value="" />
<input type="hidden" name="asb" value="<? echo $res; ?>" />


A la reception du formulaire, tester:

md5($asa) != $asb

0

#76 L'utilisateur est hors-ligne   dorjee 

  • Groupe : Membre
  • Messages : 14
  • Inscrit(e) : 19-février 07

Posté 20 mars 2007 - 01:01

Comme "promis" à OBIT voici finalement le site sur lequel j'ai travaillé ces derniers temps et qui comporte 3 formulaires avec captcha :

http://www.wikispot.fr/

Les formulaires sont visibles à partir de :

http://www.wikispot....es/contact.html

http://www.wikispot....gistration.html

http://www.wikispot....announcing.html

à bientôt ;)
0

#77 L'utilisateur est hors-ligne   Adrien54 

  • Groupe : Membre
  • Messages : 3
  • Inscrit(e) : 05-juin 07

Posté 05 juin 2007 - 17:44

Bonjour à tous,

J'ai un problème similaire :

Fatal error: Call to undefined function dsp_crypt() in /var/www/Site1/contact4.php on line 97

C'est la seule erreur que j'ai pas d'erreur d'include...

Savez vous d'ou celà peut venir ? (erreur config apache ?)


Je suis sur un serveur perso Apache 2 + PHP 5 + Mysql
Edit : J'ai testé sur un serveur Free et cela fait la même chose !


Merci d'avance

Cordialement

Adrien54

Ce message a été modifié par Adrien54 - 05 juin 2007 - 18:14.

0

#78 L'utilisateur est hors-ligne   belaadel 

  • Groupe : Modération a priori
  • Messages : 3
  • Inscrit(e) : 25-juin 07
  • Société:Maroc Freelancer

  Posté 25 juin 2007 - 19:50

Salut,

Après avoir fait des recherches sur la toile, me voilà sur cet excellent forum. Alors je m'y suis abonné.

Si je poste maintenant, c'est pour répondre à ce message de adn Salut au passage ;)
J'ai visité la page "http://www.sortiratousprix.net/contact.php" où j'ai trouvé ton formulaire avec la question de demander le résultat au visiteur/robot.
Je dois dire que j'aime bien l'idée de protéger son formulaire mais ja'i une remarque:

Si le robot est programmé à lire ton champs "asb" val1_op_val2, il n'a qu'a faire une opération de "+, -,*, /" et stoquer tes "op" dans une table pour les reconnaitre dans le futur. Puis ca serait très simple de connaitre la réponse/résultat demandé(e).

Je ne trouve pas encore une meilleure idée que celle que t'as mis (sauf avec d'autres questions, genre couleurs,...), mais je pensais au:
  • stoquage de l'ip qui permettra de
  • programmer ou masquer l'affichage de la captcha suivant le nombre de tentatives d'envoi, tout en gardant le champs de la réponse ce qui va nettement faire diminuer le nombre de spams (Si le captcha n'est pas affiché on pourras pas renseigner le champs de la réponse :wacko: ) Qu'en pensez-vous???
  • puis orienter le visiteur vers une autre page
Mon idée est simple, mais elle reste à creuser, je ne sais pas si elle pourrait être améliorée, facile à gérer, mais je reste ouvert à toutes remarques, suggéstions, ....

Voilà messieurs, dames.

Peace to you all.

<?
	$operateur = array("+", "-");
	$alpha = rand(1, 10);
	$op = rand(0, 0);
	$beta = rand(1, 10);
	$res = md5($alpha + $beta); // pour compliquer on peut ajouter une constante au calcul
?>
(Contre le spam) <? echo $alpha." ".$operateur[$op]." ".$beta." = "; ?>
<input name="asa" type="text" size="10" value="" />
<input type="hidden" name="asb" value="<? echo $res; ?>" />


A la reception du formulaire, tester:

md5($asa) != $asb

Ce message a été modifié par belaadel - 25 juin 2007 - 19:57.


#79 L'utilisateur est hors-ligne   Yoav 

  • Groupe : Membre
  • Messages : 51
  • Inscrit(e) : 20-décembre 06
  • Genre:Homme
  • Localisation:Jérusalem

  Posté 02 juillet 2007 - 11:23

Comment proposer ce service pour plusieurs rédacteurs avec des mails différends ?
Webmaster du site www.eretz.fr
0

#80 L'utilisateur est hors-ligne   loulou74 

  • Groupe : Membre
  • Messages : 4
  • Inscrit(e) : 08-juillet 07

  Posté 09 juillet 2007 - 12:57

Bonjour,Je viens de parcourir ce post avec beaucoup d'intéret, et j'ai suivi les indications de alphega et dorjee pour mettre en place le script et rajouter des champs de saisie.J'ai uploadé antispam.php au meme endroit que mon formulaire, mais malheureusement j'obtiens un message d'erreur:

Citation

Un problème s'est produit lors de l'envoi du message. Réessayez...
Ou est le binz dans mon code??????

[edit modérateur]Code supprimé : illisible[/edit]


oups,ça y est, mon mail n'était pas valide..... désolé, je :shutup:

Ce message a été modifié par NorSeb - 09 juillet 2007 - 13:05.

0

Partager ce sujet :


  • 6 Pages +
  • « Première
  • 2
  • 3
  • 4
  • 5
  • 6
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)