Script sans sécuriter pour gérer l'envoi d'un mail et fichier :
Modifié par Woodeath (05 Apr 2013 - 11:28)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Validation de la demande</title>
</head>
<?php
//--------------------------------------------------------------------------------------------------------------
// RECUPERATION DES CHAMPS FORMULAIRE ET CREATION DES VARIABLES
//--------------------------------------------------------------------------------------------------------------
// Définir les limites entre la partie HTML et fichier
$frontiere = '-----=' . md5(uniqid(mt_rand()));
// On initialise $allisok; à la moindre erreur, il passe à 0
$allisok=1;
// Récupération des fichiers de formulaire et on les assimile à une variable
$Champ01 = $_POST["ch01"];
$Champ02 = $_POST["ch02"];
$Champ03 = $_POST["ch03"];
$Champ04 = $_POST["ch04"];
$Champ05 = $_POST["ch05"];
$Champ06 = $_POST["ch06"];
$Champ07 = $_POST["ch07"];
$Champ08 = $_POST["ch08"];
$Champ09 = $_POST["ch09"];
$Champ10 = $_POST["ch10"];
$Champ11 = $_POST["ch11"];
$Champ12 = $_POST["ch12"];
$Champ13 = $_POST["monfichier"];
// Validation si un champ est oublié
if ($Champ01==""){
echo("Vous n'avez pas renseigné le champ 'Prénom Nom'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ02==""){
echo("Vous n'avez pas renseigné le champ 'UFR/Service/Association'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ03==""){
echo("Vous n'avez pas renseigné le champ 'Votre adresse mail : '. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ04==""){
echo("Vous n'avez pas renseigné le champ 'Pays'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ05==""){
echo("Vous n'avez pas renseigné le champ 'Titre de l'évènement'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ08==""){
echo("Vous n'avez pas renseigné le champ 'Nom de l'institution/organisateur'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ09==""){
echo("Vous n'avez pas renseigné le champ 'Description de l'évènement'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ11==""){
echo("Vous n'avez pas renseigné le champ 'Contact'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
if ($Champ12==""){
echo("Vous n'avez pas renseigné le champ 'Site Web'. Faites précédent pour revenir sur la page du formulaire.<br/><br/>");
$allisok = 0;
}
// Préparation du $contenu
$nom = "<br /><h3>Coordonnées</h3>La demande provient de ".$Champ01."<br />";
$service = "Son UFR/Service/Association est : ".$Champ02."<br />";
$mail = "Son adresse mail est ".$Champ03."<br />";
$pays = "Pays : ".$Champ04."<br /><br />";
$titre = "<br/><h3>Détails de l'évènement</h3>Titre de l'évènement : ".$Champ05."<br />";
if ($Champ05=="") {
$quand = "Date : ".$Champ06." ";
}
else {$quand="";}
if ($Champ06=="") {
$lieu = "Lieu : ".$Champ07."<br />";
}
else {$lieu="";}
$organisateur = "Cette évènement est organisé par : ".$Champ08."<br />";
$description = "Voici le descriptif de l'évènement : <br /><br /> ".$Champ09."<br /><br />";
if ($Champ10=="") {
$deadline = "La deadline de la publication est : ".$Champ10."<br />";
}
else {$deadline="";}
$contact = "Pous plus d'informations, joindre : <br/>".$Champ11."<br/>";
$siteweb = "Site web : ".$Champ12."<br/><br/><br/> Bonne insertion dans la newsletter !<br/><br/>"."\n";
// Annonce de quelques coordoonnées er que l'on va insérer plusieurs parties dans ce mail
$headers ='From: "Newsletter formulaire"<communication@uha.fr>'."\n";
$headers .="Reply-To: ".$Champ03.""."\n";
$headers .='MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'."\n"."\n";
//--------------------------------------------------------------------------------------------------------------
// PARTIE FICHIER
//--------------------------------------------------------------------------------------------------------------
// Validation si le fichier est uploadé
if ($_FILES['monfichier']['error'] > 0) {
$erreur = "Erreur lors du transfert ! <br/>";
echo $erreur;
// Validation si le fichier a uneb onne taille ( obsolète )
if ($_FILES['icone']['size'] > $maxsize) {
$erreur1 = "La taille du fichier est trop gros.<br/><br/>";
echo $erreur1;
}
$allisok = 0;
}
// Validation de l'extension du fichier
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'pdf', 'doc', 'xls', 'txt' );
// On met en minuscule l'extension du fichier ou on retire le "."
$extension_upload = strtolower( substr( strrchr($_FILES['monfichier']['name'], '.') ,1) );
if ( !in_array($extension_upload,$extensions_valides) ) {
$allisok = 0;
}
// Préparation des coordonnées et du titre de l'envoi
$mailto = "thomas.lambert@uha.fr";
$sujet ="Demande pour la newsletter : ".$Champ05;
// fichier temporaire uploadé déplacé dans un menu
if(isset($_FILES['monfichier']))
{
$dossier = 'upload/';
$fichier = md5(uniqid(rand(), true));
$fichier .= '--';
$fname = $_FILES['monfichier']['name'];
$fichier .= $fname;
if(move_uploaded_file($_FILES['monfichier']['tmp_name'], $dossier.$fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
// On va gérer le content-type en fonction du fichier envoyé
if ($extension_upload=="pdf"){
$ctype = "application/pdf" ;
}
else {
if ($extension_upload=="jpeg"||$extension_upload=="jpg"){
$ctype = "image/jpeg" ;
}
else {
if ($extension_upload=="gif"){
$ctype = "image/gif" ;
}
else {
if ($extension_upload=="png"){
$ctype = "image/png" ;
}
else {
if ($extension_upload=="doc"){
$ctype = "application/msword" ;
}
else {
if ($extension_upload=="xls"){
$ctype = "application/vnd.ms-excel" ;
}
else {
if ($extension_upload=="txt"){
$ctype = "application/text/plain" ;
}
else {
$ctype = "application/text/plain" ;
}
}
}
}
}
}
}
// On le prépare à l'envoi !
$message = "\n\n";
$message .= '--'.$frontiere."\n"; ;
$message .= 'Content-Type: $ctype; name="'.$fichier.'"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="'.$fname.'"'."\n\n";
$attachment = chunk_split(base64_encode(file_get_contents(''.$dossier.$fichier.'')));
$message .= $attachment."\n\n";
$message .= '--'.$frontiere.'--'."\n";
//--------------------------------------------------------------------------------------------------------------
// PARTIE PREPARATION A L'ENVOI
//--------------------------------------------------------------------------------------------------------------
$contenu = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\n";
$contenu .= '--'.$frontiere."\n";
$contenu .= 'Content-Type: text/html; charset="utf-8"'."\n";
$contenu .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$contenu .= "<html><head><title>Validation de la demande</title></head><body>".$nom.$service.$mail.$pays.$titre.$quand.$lieu.$organisateur.$description.$deadline.$contact.$siteweb."</body></html>".$message;
// Envoie du mail
if ($allisok == 1) {
mail($mailto, $sujet, $contenu, $headers);
echo "<br />Message test envoyé";
}
else {
echo "<br />Le mail n'a pas pu être envoyé";
}
// Suppression du fichier :
unlink($dossier.$fichier);
?>
<body></body></html>
Modifié par Woodeath (05 Apr 2013 - 11:28)