Formulaire avec pièce jointe

Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Dernière intervention
11 novembre 2017
-
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.
Afficher la suite 

Votre réponse

4 réponses

Messages postés
7
Date d'inscription
mardi 25 avril 2006
Dernière intervention
18 août 2016
0
Merci
à 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 ???
--
Commenter la réponse de dagor34
0
Merci
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 !
Commenter la réponse de dagor34
Messages postés
30
Date d'inscription
dimanche 10 mars 2013
Dernière intervention
11 novembre 2017
0
Merci
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 ?
Commenter la réponse de archi57
Messages postés
7
Date d'inscription
mardi 25 avril 2006
Dernière intervention
18 août 2016
0
Merci
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 !
Commenter la réponse de dagor34

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.