Formulaire avec pièce jointe

archi57 Messages postés 30 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 11 novembre 2017 - Modifié par BunoCS le 26/07/2016 à 14:18
dagor34 Messages postés 12 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 17 novembre 2020 - 18 août 2016 à 16:36
Bjr à tous,
voilà suivant le script ci-dessous, je n'arrive pas a recevoir la pièce jointe dans mon mail de destination !!
pourriez vous m'aider a résoudre ce problème ?

CODE:
<?php
$to = "sarrebourg@free.fr";
$repfich="../FichiersJoints/";
$name_file = $_FILES['attach']['name'];
$eol="\r\n";
$date = date( 'r' );
$phpversion = phpversion();
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$email = $_POST['email'];
$portable = $_POST['portable'];
$stop = $_POST['STOP'];
$finconf=$eol."N'hésitez pas à répondre à ce mail pour corriger toute erreur.".$eol;
$LL = $_POST['LL'];
$boundary = md5(time());
if($name_file!=""){
$source=$_FILES['attach']['tmp_name'];
move_uploaded_file($source, $repfich.$name_file);
$parts=explode('.',$name_file);
$last=count($parts) - 1;
$extension=$parts[$last];
$type=$_FILES['attach']['type'];
$size=$_FILES['attach']['size'];
$fp = fopen($repfich.$name_file, "rb");
$attachment = fread($fp, $size);
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg = '--'.$boundary.$eol;
$msg .= "Nom & Prénom : $nom ".$eol;
$msg .= 'Content-Type: '.$type.'; name="'.$name_file.'"'.$eol;
$msg .= 'Content-Transfer-Encoding: base64'.$eol;
$msg .= 'Content-Disposition: inline; filename="'.$name_file.'"'.$eol.$eol;
$msg .= $attachment.$eol.$eol;
}
$msg.= '--'.$boundary.$eol;
$msg.= 'Content-Type: text/html; charset="iso-8859-1"'.$eol;
$msg.= 'Content-Transfer-Encoding: 8bit'.$eol.$eol;
if($stop) {$infos="Ne souhaite pas se réinscrire.".$eol;}
else if($LL) {$infos="Souhaite prendre une licence loisir.".$eol; $infosconf="Vous souhaitez prendre une licence loisir.".$eol;}
else {
$yena=false;
$ET = $_POST['ET'];
if($ET) {$inter.=" - Au championnat par équipe en tant que titulaire".$eol; $yena=true;}
$ER = $_POST['ER'];
if($ER) {$inter.=" - Au championnat par équipe en tant que remplaçant".$eol; $yena=true;}
$CF = $_POST['CF'];
if($CF) {$inter.=" - Au critérium Fédéral".$eol; $yena=true;}
$IC = $_POST['IC'];
if($IC) {$inter.=" - Aux interclubs".$eol; $yena=true;}
$CL = $_POST['CL'];
if($CL) {$inter.=" - A la coupe de Lorraine".$eol; $yena=true;}
$CMo = $_POST['CMo'];
if($CMo) {$inter.=" - A la coupe de Moselle".$eol; $yena=true;}
$CMi = $_POST['CMi'];
if($CMi) {$inter.=" - A la coupe de la Mirabelle".$eol; $yena=true;}
if($yena) {$infosconf="Vous souhaitez participer:".$eol.$inter.$finconf; $infos="Souhaite participer:".$eol.$inter;}
else {$infosconf="Vous n'avez coché aucun renseignement. Merci de recommencer la procédure de réinscription.".$eol; $infos="N'a coché aucun renseignement !!".$eol; }
}
$msg = "Nom & Prénom : $nom ".$eol;
$msg .= "E-Mail : $email ".$eol;
$msg .= "Portable : $portable ".$eol;
$msg .= "Adresse : $adresse ".$eol;
$msgconf="Mail de confirmation.".$eol.$eol;
if($stop) $msgconf.="Nous vous confirmons réception de votre demande de non réinscription.".$eol.$eol;
else $msgconf.="Nous vous confirmons réception de votre demande de réinscription avec les données suivantes:".$eol.$eol;
$msgconf.=$msg.$infosconf.$eol;
$msg .= $infos.$eol;
if($stop) $subject = "Demande de non renouvellement de Licence de : $nom";
else  $subject = "Demande de renouvellement de Licence de : $nom";
if($stop) $subjectconf="Confirmation de demande de non renouvellement de Licence.";
else  $subjectconf="Confirmation de demande de renouvellement de Licence.";
$headers = 'MIME-Version: 1.0'.$eol;
$headers .= 'From: '.$nom.'<'.$email.'>'.$eol;
$headers .= 'Reply-To: '.$email.$eol;
$headers .= 'Date: '.$date.$eol;
$headers .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
$headers .= "X-Mailer: PHP v".$phpversion.$eol;
$headersconf = 'MIME-Version: 1.0'.$eol;
$headersconf .= 'From: SarrebougTT<'.$to.'>'.$eol;
$headersconf .= 'Reply-To: '.$to.$eol;
$headersconf .= 'Date: '.$date.$eol;
$headersconf .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
$headersconf .= "X-Mailer: PHP v".$phpversion.$eol;
if($nom=="" || $email=="") {
echo "<HTML><HEAD>";
echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>ERREUR</H1>";
echo "<P align=center>";
echo "Votre message n'a pu être envoyé faute de nom et/ou d'adresse mail.<br>Merci de recommencer<br>";
echo "<font size='12'><a href='Http://sarrebourgtt.free.fr/Script/InscriptionSTT2.html' rel="nofollow" target="_blank">Retour</a></font></P>";
echo "</BODY></HTML>";
}else if(mail($to,$subject,$msg,$headers)) {
mail($email,$subjectconf,$msgconf,$headersconf);
if($name_file!="") unlink($repfich.$name_file);
echo "<HTML><HEAD>";
echo "<TITLE>Message Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci !</H1>";
echo "<P align=center>";
echo "Votre message a été envoyé avec succès. Vous allez recevoir un mail de confirmation.</P>";
echo "</BODY></HTML>";
}else{
echo "<HTML><HEAD>";
echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>ERREUR</H1>";
echo "<P align=center>";
echo "Le mail n´a pas pu être envoyé, il y a une erreur !!<br>Merci de recommencer.<br>";
echo "<font size='12'><a href='Http://sarrebourgtt.free.fr/Script/InscriptionSTT2.html' rel="nofollow" target="_blank">Retour</a></font></P>";
echo "</BODY></HTML>";
}?>

Cordialement
Archi

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.

4 réponses

dagor34 Messages postés 12 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 17 novembre 2020
Modifié par dagor34 le 1/08/2016 à 19:01
à mon avis tu as un problème avec tes headers et FREE car la première fois que j'ai lancé tes 2 programmes sur mon compte free, ça a marché et ensuite plus rien ???
--
0
Bon , je pense avoir trouvé une piste pour Free

http://les.pages.perso.chez.free.fr/l-art-d-envoyer-des-mails-depuis-les-pp-de-free.io

Donc supprimer le plus de Headers et ne pas envoyer plusieurs fois à la même adresse .

Ci-dessous ton fichier en chantier essai brut de décoffrage :

<?php
$email = "***@***";
$to = "***@***";
$repfich="../FichiersJoints/";

$eol="\r\n";
$date = date( 'r' );
$phpversion = phpversion();

$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$email = $_POST['email'];
$portable = $_POST['portable'];
if(!isset($_POST['STOP']))
{ 
	$stop=NULL;     
}else{      
  $stop=$_POST['STOP'];
}
$finconf=$eol."N'hésitez pas à répondre à ce mail pour corriger toute erreur.".$eol;

$LL = $_POST['LL'];
$boundary = md5(time());

  $msg = '--'.$boundary.$eol;
  $msg .= "Nom & Prénom : $nom ".$eol;
  $msg .= 'Content-Type: '.$type.'; name="'.$name_file.'"'.$eol;
  $msg .= 'Content-Transfer-Encoding: base64'.$eol;
  $msg .= 'Content-Disposition: inline; filename="'.$name_file.'"'.$eol.$eol;
//  $msg .= $attachment.$eol.$eol;

$msg.= '--'.$boundary.$eol;
$msg.= 'Content-Type: text/html; charset="iso-8859-1"'.$eol;
$msg.= 'Content-Transfer-Encoding: 8bit'.$eol.$eol;
if($stop) {$infos="Ne souhaite pas se réinscrire.".$eol;}
else if($LL) {$infos="Souhaite prendre une licence loisir.".$eol; $infosconf="Vous souhaitez prendre une licence loisir.".$eol;}
else {
$yena=false;
$ET = $_POST['ET'];
if($ET) {$inter.=" - Au championnat par équipe en tant que titulaire".$eol; $yena=true;}
$ER = $_POST['ER'];
if($ER) {$inter.=" - Au championnat par équipe en tant que remplaçant".$eol; $yena=true;}
$CF = $_POST['CF'];
if($CF) {$inter.=" - Au critérium Fédéral".$eol; $yena=true;}
$IC = $_POST['IC'];
if($IC) {$inter.=" - Aux interclubs".$eol; $yena=true;}
$CL = $_POST['CL'];
if($CL) {$inter.=" - A la coupe de Lorraine".$eol; $yena=true;}
$CMo = $_POST['CMo'];
if($CMo) {$inter.=" - A la coupe de Moselle".$eol; $yena=true;}
$CMi = $_POST['CMi'];
if($CMi) {$inter.=" - A la coupe de la Mirabelle".$eol; $yena=true;}
if($yena) {$infosconf="Vous souhaitez participer:".$eol.$inter.$finconf; $infos="Souhaite participer:".$eol.$inter;}
else {$infosconf="Vous n'avez coché aucun renseignement. Merci de recommencer la procédure de réinscription.".$eol; $infos="N'a coché aucun renseignement !!".$eol; }
}
$msg = "Nom & Prénom : $nom ".$eol;
$msg .= "E-Mail : $email ".$eol;
$msg .= "Portable : $portable ".$eol;
$msg .= "Adresse : $adresse ".$eol;
$msgconf="Mail de confirmation.".$eol.$eol;
if($stop) $msgconf.="Nous vous confirmons réception de votre demande de non réinscription.".$eol.$eol;
else $msgconf.="Nous vous confirmons réception de votre demande de réinscription avec les données suivantes:".$eol.$eol;
$msgconf.=$msg.$infosconf.$eol;
$msg .= $infos.$eol;
if($stop) $subject = "Demande de non renouvellement de Licence de : $nom";
else  $subject = "Demande de renouvellement de Licence de : $nom";
if($stop) $subjectconf="Confirmation de demande de non renouvellement de Licence.";
else  $subjectconf="Confirmation de demande de renouvellement de Licence.";
// $headers = 'MIME-Version: 1.0'.$eol;
$headers = 'From: '.$nom.'<'.$email.'>'.$eol;
$headers .= 'TO: ' .$email.$eol;
$headers .= 'Reply-To: '.$email.$eol;
// $headers .= 'Date: '.$date.$eol;
// $headers .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
// $headers .= "X-Mailer: PHP v".$phpversion.$eol;
// $headersconf = 'MIME-Version: 1.0'.$eol;
$headersconf = 'From: SarrebougTT<'.$to.'>'.$eol;
$headersconf .= 'Reply-To: '.$to.$eol;
// $headersconf .= 'Date: '.$date.$eol;
// $headersconf .= "Message-ID: <TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
// $headersconf .= "X-Mailer: PHP v".$phpversion.$eol;
if($nom=="" || $email=="") {
echo "<HTML><HEAD>";
echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>ERREUR</H1>";
echo "<P align=center>";
echo "Votre message n'a pu être envoyé faute de nom et/ou d'adresse mail.<br>Merci de recommencer<br>";
echo "<font size='12'><a href='Http://dagor.free.fr/Comptes/InscriptionSTT2.html' rel="nofollow" target="_blank">Retour</a></font></P>";
echo "</BODY></HTML>";
}else if(mail($email,$subject,$msg,$headers)) {
mail($email,$subjectconf,$msgconf,$headersconf);
// if($name_file!="") unlink($name_file);
echo "<HTML><HEAD>";
echo "<TITLE>Message Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci !</H1>";
echo "<P align=center>";
echo "Votre message a été envoyé avec succès. Vous allez recevoir un mail de confirmation.</P>";
echo "</BODY></HTML>";
}else{
echo "<HTML><HEAD>";
echo "<TITLE>Message NON Envoyé !</TITLE></HEAD><BODY>";
echo "<H1 align=center>ERREUR</H1>";
echo "<P align=center>";
echo "Le mail n´a pas pu être envoyé, il y a une erreur !!<br>Merci de recommencer.<br>";
echo "<font size='12'><a href='Http://papagaio.free.fr/InscriptionSTT2.html' rel="nofollow" target="_blank">Retour</a></font></P>";
echo "</BODY></HTML>";
}
?>


Salut et bon courage !
0
archi57 Messages postés 30 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 11 novembre 2017
9 août 2016 à 15:21
Merci Dagor pour ces correctifs !!

par ailleurs suivant la ligne:
if($nom=="" || $email=="") {

je n'arrive pas a insérer correctement les conditions pour obliger l'expéditeur à cocher une des case à cocher ?
0
dagor34 Messages postés 12 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 17 novembre 2020
Modifié par dagor34 le 18/08/2016 à 16:39
le mieux c'est d'utiliser le javascript
exemple :
pour l'envoi du formulaire :
<form method="POST" action="mon-script.php" target="_blank" onsubmit="return Form_Valid(this)">

et pour le jvs un exemple : tu regardes près de Form_Valid()
<!-- Ce script possède un Copyright (© Dagor 2001)il est disponible pour une utilisation personnelle, par contre il est interdit sauf autorisation de l'auteur pour une utilisation commerciale. //-->
function isDate1(d) {
// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
// Par Romuald

if (d == "") // si la variable est vide on retourne faux
return false;

e = new RegExp("^[0-9]{2,2}\/[0-9]{2,2}\/[0-9]{4}$");

if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
return false; // Si pas bon, retourne faux

// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
j = parseInt(d.split("/")[0], 10); // jour
m = parseInt(d.split("/")[1], 10); // mois
a = parseInt(d.split("/")[2], 10); // année
cejour = new Date();
j1 = cejour.getDate();
m1 = cejour.getMonth();
a1 = cejour.getFullYear();

nbjours1 = j1+(m1*30)+((a1-1)*365)+30;
nbjour = j+(m*30)+((a-1)*365);

if (nbjours1 > nbjour) {
return ( m < 1 && m >24);
}

if ((nbjours1 +182) < nbjour) {
return ( m < 1 && m >24);
}

// Si l'année n'est composée que de 2 chiffres on complète automatiquement
if (a < 1000) {
if (a < 89) a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
else a+=1900;
}

// Définition du dernier jour de février
// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
else fev = 28;

// Nombre de jours pour chaque mois
nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] && a >= 2002);
}

function isHeure1(d) {
// Cette fonction permet de vérifier la validité d'une heure au format hh:mm
// Par YD

if (d == "") // si la variable est vide on retourne faux
return false;

e = new RegExp("^[0-9]{2,2}:[0-9]{2,2}$");

if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
return false; // Si pas bon, retourne faux

// On sépare l'heure en 2 variables pour vérification, parseInt() converti du texte en entier
h = parseInt(d.split(":")[0], 10); // heure
m = parseInt(d.split(":")[1], 10); // mn

// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
return ( h >= 9 && h <=17 && m >= 0 && m <= 59 );
}

function Form_Valid(Form)
{
if (Form.nom.value == "")
{
alert("Tapez une valeur dans la zone \"Nom\".");
Form.nom.focus();
return (false);
}

if (Form.nom.value.length < 3)
{
alert("Tapez au moins 3 caractères dans la zone \"Nom\".");
Form.nom.focus();
return (false);
}

var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t\r\n\f";
var checkStr = Form.nom.value;
var allValid = true;
var validGroups = true;
for (i = 0; i < checkStr.length; i++)
{
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
}
if (!allValid)
{
alert("Ne tapez que des lettres et des espacess dans la zone \"Nom\".");
Form.nom.focus();
return (false);
}

if (Form.prenom.value == "")
{
alert("Tapez une valeur dans la zone \"Prénom\".");
Form.prenom.focus();
return (false);
}

if (Form.prenom.value.length < 3)
{
alert("Tapez au moins 3 caractères dans la zone \"Prénom\".");
Form.prenom.focus();
return (false);
}

var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t\r\n\f";
var checkStr = Form.prenom.value;
var allValid = true;
var validGroups = true;
for (i = 0; i < checkStr.length; i++)
{
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
}
if (!allValid)
{
alert("Ne tapez que des lettres et des espaces dans la zone \"Prénom\".");
Form.prenom.focus();
return (false);
}

if (Form.telephone.value == "")
{
alert("Tapez une valeur dans la zone \"N° de téléphone\".");
Form.telephone.focus();
return (false);
}

if (Form.telephone.value.length < 10)
{
alert("Tapez au moins 10 caractères dans la zone \"N° de téléphone\".");
Form.telephone.focus();
return (false);
}

var checkOK = "0123456789-.,";
var checkStr = Form.telephone.value;
var allValid = true;
var validGroups = true;
var decPoints = 0;
var allNum = "";
for (i = 0; i < checkStr.length; i++)
{
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
}

if (!allValid)
{
alert("Ne tapez que des chiffres ou caractères \".\" dans la zone \"N° de téléphone\".");
Form.telephone.focus();
return (false);
}

var dd = Form.date1.value;
if (!isDate1(dd))
{
alert("La date du premier rendez-vous est érronée \n(forme : jj/mm/aaaa exemple : 03/12/2008)");
Form.date1.focus();
return (false);
}

var dd = Form.heure1.value;
if (!isHeure1(dd))
{
alert("L'heure du premier rendez-vous est érronée\n (forme : hh:mm exemple : 09:45) \n validité de 09h00 à 17h59)");
Form.heure1.focus();
return (false);
}

if (Form.date2.value == "")
{
Form.date2.focus();
return(true);
}
else
{
var dd = Form.date2.value;
if (!isDate1(dd))
{
alert("La date du deuxième rendez-vous est érronée \n(forme : jj/mm/aaaa exemple : 03/12/2008)");
Form.date2.focus();
return (false);
}
}

if (Form.heure2.value == "")
{
if (Form.date2.value == "")
{
Form.heure2.focus();
return(true);
}
else
{
var dd = Form.heure2.value;
if (!isHeure1(dd))
{
alert("L'heure du deuxième rendez-vous est érronée\n (forme : hh:mm exemple : 09:45) \n validité de 09h00 à 17h59)");
Form.heure2.focus();
return (false);
}
}
}
if (Form.date3.value == "")
{
Form.date3.focus();
return(true);
}
else
{
var dd = Form.date3.value;
if (!isDate1(dd))
{
alert("La date du troisième rendez-vous est érronée \n(forme : jj/mm/aaaa exemple : 03/12/2008)");
Form.date3.focus();
return (false);
}
}

if (Form.heure3.value == "")
{
if (Form.date3.value == "")
{
Form.heure3.focus();
return(true);
}
else
{
var dd = Form.heure3.value;
if (!isHeure1(dd))
{
alert("L'heure du troisième rendez-vous est érronée\n (forme : hh:mm exemple : 09:45) \n validité de 09h00 à 17h59)");
Form.heure3.focus();
return (false);
}
}
}


return (true);
}


--Bon courage !
0
Rejoignez-nous