Souci formulaire contact php avec captcha

snip74 Messages postés 248 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 11 février 2013 - 19 sept. 2010 à 22:39
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 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>




Et ici mon code qui ne fonctionne pas :/

Mon code :

<?
session_start(); //ouverture la session pour conserver le captcha
 
if (!isset($_POST["action"])) $_POST["action"]="";
if (!isset($_POST["sexe"])) $_POST["sexe"]="";
if (!isset($_POST["nom"])) $_POST["nom"]=""; //déclaration de chaque élément de formulaire
if (!isset($_POST["email"])) $_POST["email"]="";
if (!isset($_POST["sujet"])) $_POST["sujet"]="";
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="Monemail@live.fr"; //mettez ici votre adresse e-mail en tant que webmaster du site
    $objet="Contact de la page"; // 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.="Sexe :".$_POST["sexe"]." \n";
    $message_envoi.="nom du contact :".$_POST["nom"]." \n";
    $message_envoi.="email du contact :".$_POST["email"]." \n";
    $message_envoi.="sujet du contact :".$_POST["sujet"]." \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=" Tout les champs sont obligatoir (*) ";
}
 
// 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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
    background-image: url();
    background-color: #CCCCCC;
}
.Style6 {
    color: #008000;
    font-weight: bold;
}
.Style1 {color: #FF0000}
-->
</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 {
?>


<!--debut banniere -->
  


  <!--Fin banniere -->
  <!--debut menu -->
  

    
      <li>[# Nous contacter]</li>
      <li>[# Inscrivez-vous]</li>
      <li>[# Nos tarifs]</li>
      <li>[# Nos services]</li>    
      <li>[index.php Accueil]</li>    
    
  

  <!--fin menu -->
  <!--debut menu gauche -->
  

    
      <li>[# Menu]</li>
      <li>[# Menu]</li>
      <li>[# Menu]</li>
      <li>[# Menu]</li>
    
  

  <!--fin menu gauche -->
  <!--debut centre -->
  

    <form method="post" name="contact" action="<?php echo $PHP_SELF ?>" >
      Formulaire De Contact,

----

S'il vous plaît, prenez le temps de remplir tous les champs portant un   astérisque *,
vous nous aiderez à traiter votre demande le plus rapidement   possible. Merci.,

----

,

----

Vous êtes: *,
<select id="sexe" name="sexe">
<option selected="selected" value="<?php echo $_POST["sexe"] ?>">Choisissez</option>
<option value="Madame">Madame</option>
<option value="Mademoiselle">Mademoiselle</option>
<option value="Monsieur">Monsieur</option>
</select>,

----

,
,

----

Nom, Prénom: *,
" />,

----

,
,

----

Votre Email : *,
" />,

----

,
,

----

Sujet : *,
" />,

----

Votre message : *

<textarea name="message" cols=50 rows=8><?php echo $_POST["message"] ?></textarea>,

----

Entrée le code : *,
,

----

Code a introduire :,
<? echo $img ?>

      

        
      -
      
      

    </form><? } ?>
  

  <!--fin centre -->
  <!--debut pied page -->
  
 
    
Copyright © 2010 

  

  <!--fin pied page -->


 

</html>




Merci par avace.

Cordialement Stéphane

1 réponse

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
21 sept. 2010 à 19:12
Tcho,

j'ai lu ton code, c'est vrai que je ne trouve pas d'erreur flagrante! mais j'ai pas chercher à l'essayer non plus..

Je te mets quand même un commentaire pour pas que tu ne t'énerve trop longtemps lol
vas voir cette source:
URL=http://www.codes-sources.com/code.aspx?ID=38969

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:
<form method="post" action="forum.php" name=form1>

[javascript:document.form1.submit() forum]
</form>


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

Voilou j'espère t'avoir aidé un p'tit peu lol
0
Rejoignez-nous