Problème formulaire d'envoi de mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème formulaire d'envoi de mail

Re: Problème formulaire d'envoi de mail

par Xeno » 17 févr. 2010, 12:03

Up..

Problème formulaire d'envoi de mail

par Xeno » 15 nov. 2009, 18:43

Bonjour à tous,

J'ai rassemblé un script de formulaire de contact & un anti spam pour mon site web, résultat : aucun mail reçu.
Et en plus PHP ne revoie aucune erreur.

Pouvez-vous m'aider SVP ?

Voici le code :
<?php
$titre = 'Xeno\'s PortFolio - Contact';
include('header.php');
include('menu.php');
?>	
		<div id="content">
			<h2>Bienvenue sur la page de contact</h2>
<?php
	// on inclue le fichier des questions/réponses
	require_once('antispam.php');

	// on tire au sort une question
	$nospam = NoSpamQuestion();
	
	/* ATTENTION : si le formulaire a une méthode method="get", remplacez $_POST par $_GET */

	// on ne traite le formulaire que si le bouton submit a été cliqué
	if (isset($_POST['submit']))
	{
		require_once('antispam.php'); // pour définir les images, les questions et les réponses

		// récuperation des variables
		/*
			Récupérez ici vos variables du formulaire
		*/

		// n'oublions pas les 2 variables du captcha :
		$code = (isset($_POST['code'])) ? strtolower($_POST['code']) : ''; // contient la réponse du visiteur
		$nospam_question = (isset($_POST['nospam_question'])) ? $_POST['nospam_question'] : ''; // contient un nombre : le numéro de la vraie réponse

		// On demande la vraie réponse
		$verif_nospam = NoSpamQuestion('ans', $nospam_question);

		// on compare la 'vraie' réponse et celle du visiteur
		if ($code != strtolower($verif_nospam['answer']))
		{
			// le formulaire s'arrête ici
			echo '<p>Vous n\'avez pas répondu correctement à la question ....</p>';
		}
		else
		{
			// traitement du formulaire comme souhaité ...

			/* Si le formulaire est envoyé alors on fait les traitements */
			if (isset($_POST['envoye']))
			{
				/* Récupération des valeurs des champs du formulaire */
				if (get_magic_quotes_gpc())
				{
				$civilite		= stripslashes(trim($_POST['civilite']));
				$nom	     	= stripslashes(trim($_POST['nom']));
				$expediteur	= stripslashes(trim($_POST['email']));
				$sujet		= stripslashes(trim($_POST['sujet']));
				$message		= stripslashes(trim($_POST['message']));
				}
				else
				{
				$civilite		= trim($_POST['civilite']);
				$nom		    = trim($_POST['nom']);
				$expediteur	= trim($_POST['email']);
				$sujet		= trim($_POST['sujet']);
				$message		= trim($_POST['message']);
				}
    
				/* Expression régulière permettant de vérifier si le 
			    * format d'une adresse e-mail est correct */
				$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
				/* Expression régulière permettant de vérifier qu'aucun 
				* en-tête n'est inséré dans nos champs */
				$regex_head = '/[\n\r]/';
    
				/* Si le formulaire n'est pas posté de notre site on renvoie 
				* vers la page d'accueil */
				if($_SERVER['HTTP_REFERER'] != 'http://www.xenofun.fr/contact.php')
				{
				header('Location: http://www.xenofun.fr/');
				}
				/* On vérifie que tous les champs sont remplis */
				elseif (empty($civilite) 
					|| empty($nom) 
					|| empty($expediteur) 
					|| empty($sujet) 
					|| empty($message))
				{
				$alert = 'Tous les champs doivent être renseignés';
				}
				/* On vérifie que le format de l'e-mail est correct */
				elseif (!preg_match($regex_mail, $expediteur))
				{
				$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
				}
				/* On vérifie qu'il n'y a aucun header dans les champs */
				elseif (preg_match($regex_head, $expediteur) 
						|| preg_match($regex_head, $nom) 
						|| preg_match($regex_head, $sujet))
				{
					$alert = 'En-têtes interdites dans les champs du formulaire';
				}
				/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
				elseif (!isset($_COOKIE['sent']))
				{
					/* Destinataire (votre adresse e-mail) */
					$to = '[email protected]';
      
					/* Construction du message */
					$msg  = 'Bonjour,'."\r\n\r\n";
					$msg .= 'Ce mail a été envoyé depuis XenoFun.fr par '.$civilite.' '.$nom."\r\n\r\n";
					$msg .= 'Voici le message qui vous est adressé :'."\r\n";
					$msg .= '***************************'."\r\n";
					$msg .= $message."\r\n";
					$msg .= '***************************'."\r\n";
        
					/* En-têtes de l'e-mail */
					$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
        
					/* Envoi de l'e-mail */
					if (mail($to, $sujet, $msg, $headers))
					{
						$alert = 'E-mail envoyé avec succès';
            
						/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
						* renvoyer un mail en rafraichissant la page */
						setcookie("sent", "1", time() + 120);
            
						/* On détruit la variable $_POST */
						unset($_POST);
					}
					else
					{
						$alert = 'Erreur d\'envoi de l\'e-mail';
					}
          
				}
				/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
				else
				{
					unset($_POST);
				}
			}
			if (!empty($alert))
			{
				echo '<p style="color:red">'.$alert.'</p>';
			}
						echo '<p>Merci pour votre participation ...</p>';
		};
	};
?>
			<form action="contact.php" method="post">
				<p>
				<label for="civilite">Civilité :</label>
				<select id="civilite" name="civilite">
				<option 
                value="mr"
                <?php 
                    if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Monsieur
            </option>
            <option 
                value="mme"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Madame
            </option>
            <option 
                value="mlle"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Mademoiselle
            </option>
        </select>
    </p><br/>
    <p>
        <label for="nom">Nom/Prénom :</label>
        <input type="text" id="nom" name="nom" 
        	value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" 
        />
    </p><br/>
    <p>
        <label for="email">E-mail :</label>
        <input type="text" id="email" name="email" 
        	value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
        />
    </p><br/>
    <p>
        <label for="sujet">Sujet :</label>
        <input type="text" id="sujet" name="sujet" 
        	value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
        />
    </p><br/>
	<p>
	<label for="code">Ecrivez en LETTRES le résultat : <?php echo $nospam['question']; ?></label><input type="text" name="code" id="code" />
	<input type="hidden" name="nospam_question" value="<?php echo $nospam['num']; ?>" />
	</p><br/>
    <p>
        <label for="message">Message :</label>
        <textarea id="message" name="message" cols="40" rows="4">
<?php echo (isset($_POST['message'])) ? $message : '' ?>
Bonjour,</textarea>
    </p><br/>
    <p>
        <input type="submit" name="envoye" value="Envoyer" />
    </p>
</form>
		</div><!-- end of #content -->
<?php
include('footer.php');
?>
L'adresse de la page : http://xenofun.fr/contact.php

Merci d'avance.