Vous n'êtes pas identifié(e).
Bonjour,
Lorsque je mets des données dans le formulaire et que je l'envoie, j'obtiens le message d'erreur suivant:
Warning: fopen(pdf_leger.jpg) [function.fopen]: failed to open stream: No such file or directory in /home/www/d535fb38b1eca95aa12713ac33940cbd/web/form_file2.php on line 21
Pour info, la ligne 21 est: $fichier = fopen($scan, "r" ); dans le fichier form_file2.php un peu plus bas dans le texte.
Le code du formulaire est:
<form action="form_file2.php" method="post" name="formulaire">
Nom : <input maxlength="50" name="nom" size="30" type="text" />
Prénom : <input maxlength="50" name="prenom" size="30" type="text" />
E-mail : <input maxlength="50" name="mail" size="30" type="text" />
Commentaires :<textarea cols="30" name="commentaires" rows="6" wrap="soft"></textarea>
Fichier : <input maxlength="60" name="scan" size="40" type="file" />
Le fichier form_file2.php:
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$commentaires= $_POST['commentaires'];
$scan=$_post['scan'];
echo"nom: $nom<br>"; // Rajouté pour voir le contenu des variables
echo"prenom: $prenom<br>"; // Rajouté pour voir le contenu des variables
echo"mail: $mail<br>"; // Rajouté pour voir le contenu des variables
echo"commentaires: $commentaires<br>"; // Rajouté pour voir le contenu des variables
echo"scan: $scan<br>"; // Rajouté pour voir le contenu des variables
//=====Déclaration des messages au format texte et au format HTML
$message_txt ="Nom : ";
$message_html = "<html><head></head><body><b>Données pour la demande d'accès</b>,<br><br> <b>Nom :</b> $nom <br> <b>Prenom :</b> $prenom <br> <b>Email: </b> $mail </body></html>";
//==========
//=====Lecture et mise en forme de la pièce jointe
$fichier = fopen($scan, "r" );
$attachement = fread($fichier, filesize($scan));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
$sujet = "Hey mon ami !";
//=========
//=====Création du header de l'e-mail
$header = "From: \"WeaponsB\"<.....@skynet.be>\n";
$header.= "Reply-to: \"WeaponsB\" <......@skynet.be>\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========
//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format texte
$message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_txt."\n";
//==========
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format HTML
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========
//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========
$message.= "\n--".$boundary."\n";
//=====Ajout de la pièce jointe
$message.= "Content-Type: application/pdf;\n name=\"$scan\"\n";
$message.= "Content-Transfer-Encoding: base64\n";
$message.= "Content-Disposition: attachment;\n filename=\"$scan\"\n";
$message.= "\n".$attachement."\n\n";
$message.= "\n--".$boundary."--\n";
//==========
//=====Envoi de l'e-mail
mail("......@hotmail.com",$sujet,$message,$header);
//==========
?>
Merci et salutations
Christian
Hors ligne
Merci,
En effet, j'ai utilisé maintenant move_uploaded_file() et le fichier est bien uploadé. Mais le message d'erreur subsiste.
Warning: fopen() [function.fopen]: Filename cannot be empty in /home/www/d535fb38b1eca95aa12713ac33940cbd/web/form_file3.php on line 49
(toujours la même ligne $fichier1 = fopen($fichier, "r" );
La faute doit être dans le code qui me permet d'aller chercher le fichier dans le dossier temporaire upload/, mais je ne vois pas où.
Pouvez-vous m'aider à avancer d'un pas?
J'ai conservé la suite du code telle quelle, en adaptant le nom des variables.
Pour rappel, dans le formulaire, les 2 dernières lignes sont:
Fichier : <input maxlength="60" name="fichier" size="40" type="file" /><br /><br />
<input name="upload" type="submit" value="Envoyer" /></form>
et le code php est:
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$commentaires= $_POST['commentaires'];
$fichier=$_POST['fichier'];
$upload=$_POST['upload'];
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') &&
!strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
}
//=====Déclaration des messages au format texte et au format HTML
$message_txt ="Nom : ";
$message_html = "<html><head></head><body><b>Données pour la demande d'accès</b>,<br><br> <b>Nom :</b> $nom <br> <b>Prenom :</b> $prenom <br> <b>Email: </b> $mail </body></html>";
//==========
//=====Lecture et mise en forme de la pièce jointe
$fichier1 = fopen($fichier, "r" );
$attachement = fread($fichier1, filesize($fichier));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
$sujet = "Hey mon ami !";
//=========
//=====Création du header de l'e-mail
$header = "From: \"WeaponsB\"<.....@skynet.be>\n";
$header.= "Reply-to: \"WeaponsB\" <......@skynet.be>\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========
//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format texte
$message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_txt."\n";
//==========
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format HTML
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========
//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========
$message.= "\n--".$boundary."\n";
//=====Ajout de la pièce jointe
$message.= "Content-Type: application/pdf;\n name=\"$fichier\"\n";
$message.= "Content-Transfer-Encoding: base64\n";
$message.= "Content-Disposition: attachment;\n filename=\"$fichier\"\n";
$message.= "\n".$attachement."\n\n";
$message.= "\n--".$boundary."--\n";
//==========
//=====Envoi de l'e-mail
mail("test@test.com",$sujet,$message,$header);
Salutations
Christian
Hors ligne