1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
| <?php if( empty(session_id()) ){ session_start(); } // démarrage SESSION
header('Content-type:text/html; charset=UTF-8'); // encodage UTF-8
// -----------------------
// PHPMailer - v6
// Import PHPMailer classes into the global namespace (These must be at the top of your script, not inside a function)
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// -------------
// Initialisation
$form_valid = 0;
// 0 : par défaut, on affiche le formulaire
// 1 : PAS d'erreur : OK, traitement
// 2 : ERREUR : on ré-affiche le formulaire
$form_msg_err = ''; // message en cas d'erreur
$form_msg_OK = ''; // message en cas de succès
$form_msg_err = array();
// -----------------------
// SI le formulaire a été soumis
if ( isset($_POST['envoi_form'])
&& isset($_SESSION['random_OK'], $_POST['randomformOK'])
&& $_POST['randomformOK']==$_SESSION['random_OK'] )
{
// -----------------------
// TRAITEMENT
// -----------------------
// 1/ RECUPERATION des données du formulaire
// En cas de erreur, on pourra ré-afficher ces données dans le formulaire
$contact['name'] = (isset($_POST['name']))? htmlspecialchars($_POST['name']) : '';
$contact['email'] = (isset($_POST['email']))? htmlspecialchars($_POST['email']) : '';
$contact['subject'] = (isset($_POST['subject']))? htmlspecialchars($_POST['subject']) : '';
$contact['message'] = (isset($_POST['message']))? htmlspecialchars($_POST['message']) : '';
// -----------------------
// 2/ GESTION DES ERREURS (champs obligatoires, validité email,...)
// ----------
// Vérification du Nom
if( empty($contact['name']) )
{
$form_valid = 2;
$form_msg_err['name'] = "You didn't write your name!";
}
// ----------
if( empty($contact['email']) )
{
$form_valid = 2;
$form_msg_err['email'] = "You didn't write your e-mail address!";
}
// Vérification du format de l'Email
if( !empty($contact['email']) && !filter_var($contact['email'], FILTER_VALIDATE_EMAIL) ){
$form_valid = 2;
$form_msg_err['email'] = "Your e-mail address is not valid!";
}
// ----------
// Vérification du subject
if( empty($contact['subject']) )
{
$form_valid = 2;
$form_msg_err['subject'] = "What's going on?";
}
// ----------
// Vérification du message
if( empty($contact['message']) )
{
$form_valid = 2;
$form_msg_err['message'] = "You didn't write your message!";
}
// ----------
if($form_valid != 2)
{
$form_valid = 1; // OK si pas de erreur
}
// -----------------------
// 3/ TRAITEMENT SI PAS d'erreur
if($form_valid == 1)
{
// ---------------------
$mailer_data = array();
// ----------
// From
$mailer_data['FromEmail'] = $contact['email'];
$mailer_data['FromName'] = $contact['name'];
// ----------
// Destinataire
$mailer_data['ToEmail'] = "adm.mib33@gmail.com";
$mailer_data['ToName'] = "école";
// copie ? (envoyer une copie au visiteur)
$mailer_data['IsCopy'] = true;
// ----------
// Subject / Message
$mailer_data['Subject'] = $contact['subject'];
$mailer_data['Body'] = "
<p>" . $contact['name']. " a posté une question depuis le site de l'école.</p>
<p>Email : " . $contact['email'] . "</p>
<p>Subject : " . $contact['subject'] . "</p>
<p>Message : " . $contact['message'] . "</p>
";
// ---------------------
// PHPMAILER - v6
require_once('_phpmailer/vendor/autoload.php'); // indiquer le CHEMIN correct
// ---------------------
$mail = new PHPMailer;
/*
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.xxxxxxxxxxx.fr'; // Specify main and backup server
$mail->Port = 587; // Set the SMTP port
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'xxxxxxxxx'; // SMTP username
$mail->Password = 'xxxxxxxxx'; // SMTP password
*/
// ---------------------
// Email Formaté HTML
$mail->CharSet = 'UTF-8';
$mail->IsHTML(true); // true : HTML
// ----------
// FROM
$mail->setFrom( $mailer_data['FromEmail'], $mailer_data['FromName'] );
// ----------
// DESTINATAIRE de l'e-mail :
$mail->AddAddress( $mailer_data['ToEmail'], $mailer_data['ToName'] );
// ----------
// MAIL EN COPIE
if( $mailer_data['IsCopy'] )
{
$mail->addCC( $mailer_data['FromEmail'], $mailer_data['FromName'] );
}
// ----------
// Subject
$mail->Subject = $mailer_data['Subject'];
$mail->Body = $mailer_data['Body'];
// ---------------------
// --> ENVOI du MAIL
if( $mail->Send() ) // ENVOI + OK
// if( true ) // pour TEST !!
{
$valid_Contact = 1;
$form_msg_OK = "Your message has been sent!";
}
// ----------
else { // ECHEC
$valid_Contact = 2;
$form_msg_err['envoi'] = "An error occured and your message hasn't been sent!";
}
}
// -----------------------
}
unset($_POST);
// -----------------------
// Protection contre "actualiser la page" ou envoi depuis l'extérieur (vol de formulaire)
$_SESSION['random_OK'] = uniqid(); // identifiant unique
// -----------------------
?>
<!DOCTYPE html>
<html>
<head>
<!-- ........ -->
</head>
<body>
<?php
// -----------------------
// Affichage du formulaire
if ( $form_valid == 0 || $form_valid == 2 )
{
?>
<?php if ($form_valid == 2 && !empty($form_msg_err['envoi']) ){ // Affichage message d'erreur ?>
<p class="alert alert-danger"><?php echo $form_msg_err['envoi']; ?></p>
<?php } ?>
<form name="montessori" id="contactForm" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> <!-- action sur la même page -->
<input type="hidden" name="randomformOK" value="<?php echo $_SESSION['random_OK']; ?>" />
<div class="row">
<div class="col-lg-6">
<p>
<label for="name"> </label>
<input type="text" name="name" id="name" placeholder="Name" autocomplete="off" tabindex="1" class="input-cont-textarea" value="<?php echo (isset($contact['name']))? $contact['name'] : ''; ?>">
<?php if(isset($form_msg_err['name'])){ ?><span class="error-message"><?php echo $form_msg_err['name']; ?></span><?php } ?>
</p>
</div>
<div class="col-lg-6">
<p>
<label for="email"></label>
<input type="email" name="email" id="email" placeholder="E-mail address" autocomplete="off" tabindex="3" class="input-cont-textarea" value="<?php echo (isset($contact['email']))? $contact['email'] : ''; ?>">
<?php if(isset($form_msg_err['email'])){ ?><span class="error-message"><?php echo $form_msg_err['email']; ?></span><?php } ?>
</p>
</div>
<div class="col-lg-12">
<p>
<label for="subject"> </label>
<input type="text" name="subject" id="subject" placeholder="Ask something" autocomplete="off" tabindex="1" class="input-cont-textarea" value="<?php echo (isset($contact['subject']))? $contact['subject'] : ''; ?>">
<?php if(isset($form_msg_err['subject'])){ ?><span class="error-message"><?php echo $form_msg_err['subject']; ?></span><?php } ?>
</p>
</div>
<div class="col-lg-12">
<p>
<textarea name="message" placeholder="Write your message..." id="message" tabindex="5" class="input-cont-textarea" cols="40" rows="10"><?php echo (isset($contact['message']))? $contact['message'] : ''; ?></textarea>
<?php if(isset($form_msg_err['message'])){ ?><span class="error-message"><?php echo $form_msg_err['message']; ?></span><?php } ?>
</p>
<p class="alert text-danger">* All fields are required</p>
</div>
<div class="col-lg-12">
<p>
<input type="submit" id="submitbtn" name="envoi_form" class="btn btn-default" value="Send message" tabindex="7"/>
</p>
</div>
</div>
</form>
<?php
}
// -----------------------
// Affichage si traitement OK
else {
?>
<?php if ( !empty($form_msg_OK) ){ // Affichage message OK ?>
<p class="alert alert-success"><?php echo $form_msg_OK; ?></p>
<?php } ?>
<!-- ....(lien "retour à l'accueil" ou autre...).... -->
<?php
}
?>
</body>
<html> |
Partager