Envoie mail phpmailer

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 23 nov. 2013 à 11:56
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 24 nov. 2013 à 23:20
Bonjour,

J'ai mis en place pour mon formulaire de contact phpmailer.
J'ai rajouté dans mon fichier contact un anti-spam.
Après plusieurs essai je m'aperçois que lorsque je rempli tous les champs de mon formulaire si je ne coche pas la checkbox le formulaire est quand même envoyé.
Par contre si j'oublie de remplir un champ le formulaire me renvoie bien un message.
Pouvez vous m'aider à trouver l'erreur sur mon fichier.
Je vous remercie très sincèrement.
Cordialement


<?php
$decompurl = pathinfo( $_SERVER['REQUEST_URI'] );
$baseurl = $decompurl['basename'];

if ( substr_count( $baseurl, '?' ) === 0 )
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>

<meta name="revisit-after" content="1">
<meta name="description" content="EXmail 1.1">
<meta name="keywords" content="exmail">
<meta name="robots" content="ALL">
<meta name="distribution" content="Global">
<meta name="rating" content="General">
<meta name="copyright" content="Steuf">
<meta name="author" content="Steuf">

</head>
<body>
<?php
}
if ( isset( $_POST['submit'] ) )
{

////////////////////
// CONFIGURATION///
////////////////////

$to = 'monadresse@orange.fr'; // Mettre ici là ou les adresses emails ( Séparées d'une virgule ) auquels le mail doit être envoyé.
$subject = 'Formulaire de contact '.$_POST['nom']; // Mettre ici le sujet du mail
$format = 'html'; // Mettre ici le format de l'email, pour html mettre 'html', pour le format texte mettre 'texte'

///////////////////////////////////////
// CONFIGURATION DE L'ENVOIE DU MAIL///
///////////////////////////////////////

$foncmail = 'mail'; // Si l'hébergeur permet la fonction mail mettre 'mail', sinon on peut utiliser smtp en mettant 'smtp'

//////////////////////////////////////////////////////////////////////////
// CONFIGURATION SMTP//( Si on n'utilise pas SMTP ne pas configurer ces champs ) //
//////////////////////////////////////////////////////////////////////////

$hostsmtp = ''; // Mettre ici l'hôte SMTP par exemple 'smtp.free.fr'
$portsmtp = '25'; // S'il faut utiliser un autre port que le port 25 à spécifier ici
$authsmtp = false; // Si le serveur demande une authentification mettre true, s'il n'y a pas besoin d'authentification mettre false et ignorez les champs suivant
$usersmtp = ''; // Mettre ici le login d'accès au serveur SMTP. Par exemple : 'toto'
$passmtp = ''; // Mettre ici le mot de passe d'accès au serveur SMTP. Par exemple : 'Mon_mot_de_pass'

// Dans body on a le corps du mail, mettre ici les variables du champs commentaire $comment,
// on peut mettre bien entendu plusieurs variables avec du texte au format html ou texte selon notre choix.
// Attention ! Comme on le voit dans l'exemple, le texte doit être entre des Appostrophes , alors que les Variable
// venant du formulaire doivent être en dehors et de la forme .$_POST['nom']. ( Ne pas oublier les points )
// Attention ! Si on met une appostrophe dans le texte elle doit être precedee de \ Exemple :
// Si je veux écrire : J'y vais , il faut mettre : J\'y vais.

$body = '<html><head><title>EXmail 1.1</title></head>
<body><strong>Demande de renseignements concernant la Formation de '.$_POST['nom'].' :</strong><br>
<p>'.$_POST['comment'].'</p></body></html>';

///////////////////////////////
///FIN DE LA CONFIGURATION////
//////////////////////////////

function CheckEmail( $email )
{
//Fonction "ereg" interdit certains caractères dans les adresses mails
return mb_ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_'a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+$',$email );
}

/////////////////////
// CONFIGURATION ///
////////////////////

// Si l'adresse email n'est pas valide, on met un message d'erreur.
if( !CheckEmail( $_POST['email'] ))
{
$error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
}

// On vérifie que les champs obligatoires sont remplis, s'ils ne sont pas rempli on dirige vers un message d'erreur, pour vérifier d'autres champs
// du formulaire que l'on cré. On a qu'à recopier les deux lignes si dessous et de remplacer la variable $_POST['nom'] par celle
// de la partie du formulaire que l'on veut rendre obligatoire, ainsi que le message en html que l'on veut mettre en cas d'erreur.

if ( empty( $_POST['nom']))
{
$error[] = '<p class="erreur">Vous n\'avez pas mis votre Nom !</p>';
}

/////////////////////////
// FIN CONFIGURATION ///
////////////////////////

if ( isset( $_FILES['upload_localfile']['tmp_name'] ) and is_uploaded_file( $_FILES['upload_localfile']['tmp_name'] ) )
{
$destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
if ( move_uploaded_file( $_FILES['upload_localfile']['tmp_name'], $destination ) )
{
$uploadinfo = '<p class="erreur">Fichier joint envoyé...</p>';
}
}
else
{
$uploadinfo = '<p class="erreur">Pas de fichier joint ! <p>';
}

if ( !isset( $error ) or empty ( $error ) )
{
$reqclass = dirname(__FILE__).'/class.phpmailer.php';
require_once ( $reqclass );
$mail = new PHPmailer();

if ( $foncmail === 'mail' )
{
$mail->IsMail();
}
elseif ( $foncmail === 'smtp' )
{
$mail->IsSMTP();
$mail->Host = $hostsmtp;
$mail->Port = $portsmtp;
$mail->SMTPAuth = $authsmtp;
$mail->Username = $usersmtp;
$mail->Password = $passmtp;
}
if ( $format === 'html' )
{
$mail->IsHTML(true);
}
elseif ( $format === 'texte' )
{
$mail->IsHTML(false);
}
$mail->From = $_POST['email'];
$mail->FromName = $_POST['nom'];
$mail->AddAddress( $to );
$mail->Subject = $subject ;
$mail->Body = stripslashes( $body );

if ( isset( $destination ) )
{
$mail->AddAttachment( $destination );
}
if(!$mail->Send())
{
echo '<p class="erreur">Erreur fonction mail() :</p><br/>';
echo $mail->ErrorInfo;
}
else
{
echo $uploadinfo;
echo '<p class="erreur">Formulaire envoyé...<br/> Je vous répondrais dans les plus brefs délai Merci !<br/><br/>Gilbert</p>';
}
unset($mail);
}
else
{
foreach ( $error as $errormsg )
{
echo $errormsg;
}
echo '<p class="erreur">Le Formulaire n\'a pas été envoyé</p>
<p class="erreur">Veuillez recommencer !</p><br/>';
}
if ( isset( $destination ) )
{
unlink( $destination );
}
}

if ( ( ( isset( $error ) or !empty ( $error ) ) and isset( $_POST['submit'] ) ) or !isset( $_POST['submit'] ) )
{

/////////////////////////////////
///LE CODE HTML DU FORMULAIRE///
/////////////////////////////////
?>
<?php
// Récuperation des valeurs en GET ou en POST
$try=(isset($_GET['try'])?$_GET['try']:(isset($_POST['try'])?$_POST['try']:''));
$nobotv=(isset($_GET['nobotv'])?$_GET['nobotv']:(isset($_POST['nobotv'])?$_POST['nobotv']:''));
$nobotc=(isset($_GET['nobotc'])?$_GET['nobotc']:(isset($_POST['nobotc'])?$_POST['nobotc']:''));
$nobots=(isset($_GET['nobots'])?$_GET['nobots']:(isset($_POST['nobots'])?$_POST['nobots']:''));

// Variable
$nobot = time().'_'.rand(50000, 60000);


if($try=='send'){
// Ici Le visiteur soumissione le formulaire
if(($nobotc!=md5($nobotv)) or ($nobotv=='') or ($nobots!='')){
echo "\n<br /> <b>Anti-Spam</b> : <div style=\"color: #FF0000\">Vous n'avez pas cocher la case !</div><br/>";
//on réafiche le formulaire, car le test a echoué
}
else
{
// Le test est bon... On continue
}
}
else
{
// Ici on affiche le formulaire, c'est l'affichage par défaut
}
?>
<center><div class="texteformulaire">
<!---enctype="multipart/form-data" indiquant un échange de données--->

<form action="<?php $_SERVER['REQUEST_URI'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="try" value="send">
<input type="hidden" name="nobotv" value="<?php echo $nobot; ?>">

<p>Votre adresse email<span class="asterisque">*</span> :<br/>
<input type="text" name="email" value="" size="50" class="fondformulaire">
</p>

<p>Votre Nom<span class="asterisque">*</span> :<br/>
<input type="text" name="nom" value="" size="50" class="fondformulaire">
</p>

<p class="formcentre">Commentaires :<br/>
<textarea type="text" name="comment" cols="50" rows="10" class="fondformulaire"></textarea>
</p>

<p>Fichier joint ( 500Ko maximum) :
<input type="hidden" name="MAX_FILE_SIZE" value="500000"/>
<input type="file" name="upload_localfile" class="fondformulaire"/>
</p>
<!---Ce code permet d'empêcher les robots spammeurs de valider un formulaire.--->
<!---Lors qu'un être humain passera sur votre formulaire celui ci cochera la case "je suis un être humain"--->
<!---Un stupide robot lui cochera toutes les cases, ou aucune des cases.--->
<!---A savoir qu'un être humain ne verra pas la case "I'am a Stupid Spam Robot". (le champ est masqué)--->
<!---Résultat : un robot ne parvient pas à valider se formulaire !--->
<!---Pour ne pas qu'un robot puisse retenir les réponses à cocher ou à ne pas cocher, j'ai integrer l'heure dans le POST, et une fonction MD5.--->
<!---Il est aussi possible de vérifier l'heure...--->
<!---Il suffit pr cela de comparer $nobotc et time()--->
<h3>Anti-Spam :</h3>
<input type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" />Je confirme que je suis un être humain, et pas un robot spammeur.
<div style="position: absolute; visibility: hidden; left: -5000; top : -5000">
<br><input type="checkbox" name="nobots" value="<?php echo time(); ?>" />I'm a Stupid Spam-Robot
</div>

<p class="formcentre">
<input type="reset" name="reset" value="Effacer">
<input type="submit" name="submit" value="Envoyer">
</p>

</form>

<span class="asterisque">*Champs obligatoires</span>

</div></center>
<br/>
<?php
////////////////////////////////////
//FIN DU CODE HTML DU FORMULAIRE///
////////////////////////////////////

}
if ( substr_count( $baseurl, '?' ) === 0 )
{
?>

</body>
</html>

<?php
}
?>

A voir également:

1 réponse

labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
24 nov. 2013 à 23:20
Bonjour
Quelqu'un pourrait-il me donner son avis?
Merci beaucoup par avance.
0