snip74
Messages postés248Date d'inscriptionvendredi 3 novembre 2006StatutMembreDernière intervention11 février 2013
-
19 sept. 2010 à 22:39
mailliam
Messages postés261Date d'inscriptionmardi 2 juillet 2002StatutMembreDernière intervention10 mars 2014
-
21 sept. 2010 à 19:12
Bonjour,
je fait appel a vous car je pète un câble lol.
Voila j'ai trouvé un système de captcha je les mis sur mon formulaire de contact et rien ne marche ni alerte ni envoie d'email. donc je fait appel a vous car je suis dessus depuit 3 jours sans trouvé pourquoi il ne fonctionne pas je vous mais le code originale puis mon code a moi.
code originale :
<?
session_start(); //ouverture la session pour conserver le captcha
if (!isset($_POST["action"])) $_POST["action"]= "";
if (!isset($_POST["nom"])) $_POST["nom"]=""; //déclaration de chaque élément de formulaire
if (!isset($_POST["email"])) $_POST["email"]="";
if (!isset($_POST["message"])) $_POST["message"]="";
if (!isset($_POST["captcha"])) $_POST["captcha"]="";
$msg="";
$flag=0;
if ($_POST["action"]=="Envoyer" && $_POST["email"]!="" && strtolower($_POST["captcha"])==$_SESSION["phrase"]){
$destinataire="ygmar@yahoo.com"; //mettez ici votre adresse e-mail en tant que webmaster du site
$objet="Formulaire de contact du site web"; // titre du mail automatique
$message_envoi=" Vous avez reçu une demande de contact \n";
$message_envoi.="Voici le contenu : \n"; //déclaration du contenu du message
$message_envoi.="nom du contact :".$_POST["nom"]." \n";
$message_envoi.="email du contact :".$_POST["email"]." \n";
$message_envoi.="message du contact :".$_POST["message"]." \n"; //rajouter apres cette ligne les autres éléments du formulaire
mail($destinataire,$objet,$message_envoi); // envoi du message
$flag=1; //si tout est OK, on passe cette variable à 1
}
else{
$msg=" remplissez au moins le nom et le texte de vérification ";
}
// gestion de l'affichage du captcha
$monfichier =fopen("captcha.txt","r");
$i= 0;
while(!feof($monfichier)){
$montab[$i]=fgets($monfichier,4096);
$i++;
}
fclose($monfichier);
shuffle($montab);
$elem0=explode(";",$montab[0]);
$elem1=explode(";",$montab[1]);
$elem2=explode(";",$montab[2]);
$elem3=explode(";",$montab[3]);
$elem4=explode(";",$montab[4]);
$phrase=$elem0[0].$elem1[0].$elem2[0].$elem3[0].$elem4[0];
$_SESSION["phrase"]=$phrase;
$img="
";
//fin de gestion du captcha
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formulaire de contact</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
/* feuille de style pour le formulaire, changez ici ce que vous désirez */
form{width:500px;font-family:verdana;font-size:10px;}
legend{font-weight:bold;}
.img{border:1px solid black;width:125px;}
</style>
</head>
<?
if($flag==1){
// quand le message est parti voici ce qui est affiche, libre à vous de changer ce texte
echo "merci pour votre message";
}
else {
?>
<form method="post" name="contact" action="<?php echo $PHP_SELF ?>">
<fieldset>
<legend>Formulaire de Contact</legend>
<? echo $msg ?>
<label>Nom : </label>" />
<label>Email : </label>"/>
<!-- vous pouvez rajouter des éléments de formulaires ici -->
<label>Message : </label><textarea name="message" cols=40 rows=8><?php echo $_POST["message"] ?></textarea>
<? echo $img ?><label>Recopiez le texte de l'image :</label>
</fieldset>
</form>
<? } ?>
</html>
elle fonctionne a merveille et est simple d'utilisation, je l'utilise sur mon site.. Pour la petite histoire, avant que je ne le mette j'avais 10 msg de pub par jour sur mon forum!! je l'ai mis et malgré le captcha j'avais tjs un robot qui parvenait à me mettre un msg de viagra!
Donc j'ai fait comme cela, en plus du capcha pour le lien qui renvoie sur mon forum:
de cette facon j'envoie la variable "antispam" à ma page forum.php
et dans la page je contrôle que dans la variable il y aie "000" de cette facon:
<?php
if ($antispam == "000")
{
//ok (ca veut dire que la page est chargée en passant par le lien..)
}
else
{
print "Une Erreur s'est produite!";
exit;
}
?>
donc comme le robot charge directement les pages qui ont des forums, ici direct forum.php sans passer par le lien, la variable antispam est vide et le formulaire ne s'affiche pas