Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
J'ai récupéré un script php pour envoyer des mails mais il ne propose pas l'ajout de pièces jointes, j'essai depuis plusieurs jours divers codage mais rien ni fait, je reste bloqué, je dispose d'un bout de code pour ajouter la fonction ajout de pièces jointes mais je n'arrive pas a l'incorporer dans mon code php pour la partie mail.
Il y a 2 parties, une partie html pour le formulaire et une partie pour le php.
Voici le formulaire :
<html>
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="POST" action="mail.php">
<table width="74%" border="0">
<tr>
<td width="28%"><strong>Sujet : </strong></td>
<td width="72%">
<input name="object" type="text" id="object8">
</td>
</tr>
<tr>
<td><strong>Expediteur :</strong></td>
<td><input name="name" type="text" id="from6">
</td>
</tr>
<tr>
<td><strong>Adresse de retour :</strong></td>
<td><font size="2">
<input name="reply" type="text" id="reply4">
</font></td>
</tr>
<tr>
<td><strong>Contenu du message : </strong></td>
<td><select name="type" id="select3">
<option value="txt">Texte</option>
<option value="html">Html</option>
</select>
</td>
</tr>
<tr>
<td><strong>Destinataire : </strong></td>
<td><input name="to" type="text" id="to4">
</td>
</tr>
<tr>
<td valign="top"><strong>Autre destinataire :</strong></td>
<td><input name="Cc" type="text" id="to"></td>
</tr>
<tr>
<td><strong>Autre destinataire (caché) :</strong></td>
<td><input name="Bcc" type="text" id="to2"></td>
</tr>
<tr>
<td valign="top"><strong>Priorité : </strong></td>
<td><select name="priority" id="priority">
<option value="1">Haute
<option value="2">Moyenne
<option value="3" selected>Normale
</select></td>
</tr>
<tr>
<td><strong>Date et heure:</strong></td>
<td><select name="day1" id="day1">
<option value="Mon">Lundi</option>
<option value="Tue">Mardi</option>
<option value="Wed">Mercredi</option>
<option value="Thu">Jeudi</option>
<option value="Fri">Vendredi</option>
<option value="Sat">Samedi</option>
<option value="Sun">Dimanche</option>
</select>
<select name="day2" id="day2">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="11">11
<option value="12">12
<option value="13">13
<option value="14">14
<option value="15">15
<option value="16">16
<option value="17">17
<option value="18">18
<option value="19">19
<option value="20">20
<option value="21">21
<option value="22">22
<option value="23">23
<option value="24">24
<option value="25">25
<option value="26">26
<option value="27">27
<option value="28">28
<option value="29">29
<option value="30">30
<option value="31">31
</select>
<select name="month" id="month">
<option value="Jan">Janvier</option>
<option value="Feb">Février</option>
<option value="Mar">Mars</option>
<option value="Apr">Avril</option>
<option value="May">Mai</option>
<option value="Jun">Juin</option>
<option value="Jul">Juillet</option>
<option value="Aug">Août</option>
<option value="Sep">Septembre</option>
<option value="Oct">Octobre</option>
<option value="Nov">Novembre</option>
<option value="Dec">Décembre</option>
</select>
<input name="time" type="text" id="time" value="HH:MM:SS" size="13" maxlength="13"> <input name="year" type="text" id="year" value="yyyy" size="4" maxlength="5">
<font size="2">Fuseau
:
<input name="zone" type="text" id="zone" value="+0200" size="5" maxlength="6">
</font> </td>
</tr>
<tr>
<td valign="top"><strong>Corps du message:</strong> </td>
<td><textarea name="msg" cols="50" rows="10" id="textarea"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Poster" method="POST" action="mail.php"></td>
</tr>
</table>
<p> </p>
<div align="center"><font color="#333333" size="1">[Anony]Mailer 1.0 - Par Fishbowl | Script disponible sur www.phpannu.com |</font>
</div>
</form>
</body>
</html>La partie php :
<?
//Ecriture de l'en-tête
$headers = "From: $name \n";
$headers .= "X-Sender: $name\r\n";
$headers .= "X-Mailer: [Anony]mailer v1b\r\n";
$headers .= "Return-Path: <$reply>\r\n";
if($type="html"){
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; }
else{
$headers .= "Content-Type: text/plain\r\n";
}
$headers .= "X-Priority: $priority\r\n";
$headers .= "Cc: $Cc\r\n";
$headers .= "Bcc: $Bcc\r\n";
$headers .= "Date: $day1, $day2 $month $year $time $zone \r\n"; //ex : "Date: Tue, 22 Jul 2003 13:39:04 +0200"
//Envoie du mail
if(mail($to,$object,$msg,$headers))
{
$index="index.html"; //page de retour si tout se passe bien
$retour="mail.html"; //Page de retour en cas d'échec de l'envoi
//Envoie du mail réussi
echo <<< HTML
<html>
<head>
<title>[Anony]Mailer</title>
</head>
<body>
<font color="#66666" size="4"><b>[Anony]Mailer</b></font>
<br><br><font color="#33333"><b>Mail envoyé avec succès.</b></font>
<br><a href="$index">Retour</a>
</body>
</html>
HTML;
}
else //Echec lors de l'envoi
{
echo <<< HTML
<html>
<head>
<title>[Anony]Mailer</title>
</head>
<body>
<font color="#66666" size="4"><b>[Anony]Mailer</b></font>
<br><br>
<font color="#33333"><b>Echec Lors de l\'envoi du mail.</b></font>
<br><a href="$retour">Retour</a>
</body>
</html>
HTML;
}
?>et voici le bout de code trouvé pour ajouter plusieurs pièces jointes (plusieurs photos dans l'exemple) :
<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/home/damien/photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}
}
?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>Pour commencer, j'ai modifié le code dans la partie html:
<form name="form1" method="POST" action="mail.php" enctype="multipart/form-data">
Puis j'ai transformer mon document html en php pour ajouter avant la balise html, le code suivant :
<?
if(isset($_FILES['photo']))
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/dossier temporaire sur le serveur/photo';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}?>J'ai ajouter une autre partie dans le formulaire pour pouvoir ajouter des fichiers mais je n'ai pas du tout modifier le premier fichier en php.
rappel :
fichier html a été modifié en php avec des modifs
fichier php n'a pas été modifié.
Voila mon code sur la partie qui a été modifié :
<?
if(isset($_FILES['photo']))
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/home.45/f/a/s/fastsolu/www/upload/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}?>
<html>
<head>
<title>Mail Anonyme</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="POST" action="mail.php" enctype="multipart/form-data">
<table width="74%" border="0">
<tr>
<td width="28%"><strong>Sujet : </strong></td>
<td width="72%">
<input name="object" type="text" id="object8">
</td>
</tr>
<tr>
<td><strong>Expediteur :</strong></td>
<td><input name="name" type="text" id="from6">
</td>
</tr>
<tr>
<td><strong>Adresse de retour :</strong></td>
<td><font size="2">
<input name="reply" type="text" id="reply4">
</font></td>
</tr>
<tr>
<td><strong>Contenu du message : </strong></td>
<td><select name="type" id="select3">
<option value="txt">Texte</option>
<option value="html">Html</option>
</select>
</td>
</tr>
<tr>
<td><strong>Destinataire : </strong></td>
<td><input name="to" type="text" id="to4">
</td>
</tr>
<tr>
<td valign="top"><strong>Autre destinataire :</strong></td>
<td><input name="Cc" type="text" id="to"></td>
</tr>
<tr>
<td><strong>Autre destinataire (caché) :</strong></td>
<td><input name="Bcc" type="text" id="to2"></td>
</tr>
<tr>
<td valign="top"><strong>Priorité : </strong></td>
<td><select name="priority" id="priority">
<option value="1">Haute
<option value="2">Moyenne
<option value="3" selected>Normale
</select></td>
</tr>
<tr>
<td><strong>Date et heure:</strong></td>
<td><select name="day1" id="day1">
<option value="Mon">Lundi</option>
<option value="Tue">Mardi</option>
<option value="Wed">Mercredi</option>
<option value="Thu">Jeudi</option>
<option value="Fri">Vendredi</option>
<option value="Sat">Samedi</option>
<option value="Sun">Dimanche</option>
</select>
<select name="day2" id="day2">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="11">11
<option value="12">12
<option value="13">13
<option value="14">14
<option value="15">15
<option value="16">16
<option value="17">17
<option value="18">18
<option value="19">19
<option value="20">20
<option value="21">21
<option value="22">22
<option value="23">23
<option value="24">24
<option value="25">25
<option value="26">26
<option value="27">27
<option value="28">28
<option value="29">29
<option value="30">30
<option value="31">31
</select>
<select name="month" id="month">
<option value="Jan">Janvier</option>
<option value="Feb">Février</option>
<option value="Mar">Mars</option>
<option value="Apr">Avril</option>
<option value="May">Mai</option>
<option value="Jun">Juin</option>
<option value="Jul">Juillet</option>
<option value="Aug">Août</option>
<option value="Sep">Septembre</option>
<option value="Oct">Octobre</option>
<option value="Nov">Novembre</option>
<option value="Dec">Décembre</option>
</select>
<input name="time" type="text" id="time" value="HH:MM:SS" size="13" maxlength="13"> <input name="year" type="text" id="year" value="yyyy" size="4" maxlength="5">
<font size="2">Fuseau
:
<input name="zone" type="text" id="zone" value="+0200" size="5" maxlength="6">
</font> </td>
</tr>
<tr>
<td valign="top"><strong>Corps du message:</strong> </td>
<td><textarea name="msg" cols="50" rows="10" id="textarea"></textarea></td>
</tr>
<tr>
<td><strong>Pièces jointes: </strong></td>
<td>
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="photo_2">Photo 2 :</label><input type="file" name="photo_2" /></p>
</legend>
</fieldset>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Poster" method="POST" action="mail.php"></td>
</tr>
</table>
<div align="center"><font color="#333333" size="1">[Anony]Mailer 1.0 - Par Fishbowl | Script disponible sur www.phpannu.com |</font>
</div>
</form>
</body>
</html>résultat je reçois le mail mais pas les pièces jointes!
Hors ligne