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.
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]<?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');
?>[/php]
L'adresse de la page : http://xenofun.fr/contact.php
Merci d'avance.