mail.php 4.35 KB
<?php
/* copyright 2016 - Thibaut LOMBARD */ 
	
	//affiche les messages d'errreurs
	ini_set("display_errors",0);
	//Start session
	session_start();
	// Tableau permettant de stocker les erreurs de validation 
	// Dans la variable $_SESSION
	$errmsg_arr = array();
    $validform_arr = array();
	
	// flag pour valider les entrées
	$errflag = false;
	$validflag = false;
	
	function mail_utf8($to, $from_user, $from_email, $subject = '(No subject)', $message = '')
			   { 
				  $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
				  $subject = "=?UTF-8?B?".base64_encode($subject)."?=";


				  //$headers = "From: ".$from_user"<".base64_encode($from_email).">\r\n". 
				  $headers = "Reply-To: contactform@website.tld <contactform@website.tld>\r\n".
					"Return-Path: website.tld <contactform@website.tld>\r\n".
					 "From: $from_user <$from_email>\r\n".
					"Organisation: YOURORG\r\n". 
						   "MIME-Version: 1.0" . "\r\n" . 
						   "Content-type: text/html; charset=UTF-8" . "\r\n"; 

				 return mail($to, $subject, $message, $headers); 
			   }
			   
	//be secured against cross site scripting attacks
	function secu_txt($text) {
    			return htmlentities(strip_tags($text), ENT_QUOTES, 'UTF-8');
									}
			
	//be secured against sql injections attacks
	function clean($variable) {
				global $link;
						$variable2 = utf8_decode($variable);
						if (get_magic_quotes_gpc())
							{
					$variable2 = stripslashes($variable2);
							}
				$variable2 = mysqli_real_escape_string($link,$variable2);
				$variable2 = utf8_encode($variable2);
				return $variable2;
					}
					
	/* Fin des fonctions de sécurisation et d'envoi de mail, démarrage du script */				
	$to = "youremail@yourdomain.tld";	
	$to2 = $_POST["email"];
	$sujet = "mail envoyé par: ".secu_txt($_POST["nomprenom"]);
	$message = secu_txt($_POST["message"]);
	$tel = secu_txt($_POST["telephone"]);
	$ip = secu_txt($_SERVER["REMOTE_ADDR"]);
	$ua = secu_txt($_SERVER["HTTP_USER_AGENT"]);
	$referer="non défini";
	if(isset($_SERVER["HTTP_REFERER"])){ $referer = secu_txt($_SERVER["HTTP_REFERER"]);}
	//sanitisation des email si invalide affiche un message d'erreur
	$regexp="/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";

			if ( !preg_match($regexp, $to2) ) {
							$errmsg_arr[] = 'Mail incorrect le format doit respecter ce mod&egrave;le : utilisateur@domaine.tld';
							$errflag = true;
  				}
			if ( !is_numeric($tel) ) {
							$errmsg_arr[] = 'Simplement des variables numériques sont autorisées dans le téléphone.';
							$errflag = true;
  				}
  	
  			if ( strlen($sujet) > 255 ) {
							$errmsg_arr[] = 'Message trop long , 200 caract&egrave;res maximum.';
							$errflag = true;
  				}
  	
  			if ( strlen($message) > 500 ) {
							$errmsg_arr[] = 'Message trop long , 255 caract&egrave;res maximum.';
							$errflag = true;
  				}

	// Entete additionnelle
			//useless
			//$headers2 = 'To: '.clean($_POST["pseudo"]).' <'.$to2.'>' . "\r\n";
			$from_user2 = "contactform@website.tld";
			$from_email2 = "contactform@website.tld";
			$today = date("F j, Y, g:i a");                   // March 10, 2001, 5:16 pm
			$message2 = '<html>
						<head>
						<title>Ceci est un mail provenant du formulaire de contact de website.tld</title>
						</head>
						<body>
						<p><b>Message reà§u:</b></p>
						<p>'.$message.'</p>
						<p><b>Les informations du visiteur:</b> </p>
						<p><b>IP : </b>'.$ip.'</p>
						<p><b>Navigateur : </b>'.$ua.' </p>
						<p><b>Téléphone: </b>'.$tel.'</p>
						<p><b>Courriel: </b>'.$to2.'</p>
						<p>'.$sujet.'</p>
						<p><i><b>Envoyé le :</b> '.$today.' </i></p> 
						</body>
						</html>
						';

		/*
		 * Validation des erreurs 
		 */ 
			if($errflag) {
						$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
						session_write_close();
						header("location: index.php#last");
						exit();
			} else {  //if($validflag) {
						mail_utf8($to, $from_user2, $from_email2, $sujet, $message2);
						$validform_arr[] = "Merci, si vous pensez que le courriel n'a pas été reà§u il vous est possible de me contacter via l'adresse <b>youremail@yourdomain.tld</b>, je vais veiller à  vous répondre dans de brefs délais afin que vous trouviez satisfaction de nos échanges.";
						$validflag = true;
						$_SESSION['VALIDMSG_ARR'] = $validform_arr;
						session_write_close();
						header("location: index.php#last");
						exit();
							}	
		
?>