Bonjour à tous
J'ai fait un formulaire avec pièce jointe, j'aurais besoin de votre aide pour le valider.
1. A savoir : rendre obligatoire l'envoi de fichier ce qui n'a pas l'air d'être le cas...le mail part quand même...
2. M'assurer que le fichier n'est pas autre qu'un .doc ou un .pdf
Je l'ai construit sur la base de tutos.
3. Comment éviter le hacking ? j'ai lu qquepart une fonction permettant de refuser l'envoi de documents php ou autres, mais je ne mets plus la main dessus.
4. si je mets une pièce jointe .jpg, j'ai ces messages d'erreur qui apparaissent et le formulaire part quand meme
Code : Tout sélectionner
Warning: fopen(cox.jpg): failed to open stream: No such file or directory in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 79
Warning: filesize(): Stat failed for cox.jpg (errno=2 - No such file or directory) in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 80
Warning: fread(): supplied argument is not a valid stream resource in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 80
Warning: fclose(): supplied argument is not a valid stream resource in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 81
Warning: unlink(cox.jpg): No such file or directory in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 107
Voici une partie de mon code
<?php
$success=false;
$message="";
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; // INIT DES VARIABLES
if(!isset($_POST['societe'])) $societe=""; else $societe=htmlentities(addslashes($_POST['societe']));
......
if(!isset($_FILES['fichier'])) $fichier=""; else $fichier=$_FILES['fichier'];
$name_file = $_FILES['fichier']['name'];
$source=$_FILES['fichier']['tmp_name'];
move_uploaded_file($source, "./".$name_file);
$extension=get_extension($name_file);
$type="text/plain";
if($type=="doc")
{
$type="text/vnd.ms-word";
}
$type2="application/pdf";
function get_extension($filename)
{
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}
//vérifications
if (($tel!="")&&($fichier!="")&&($nom!="")&&($prenom!="")&&($mail!="")&&($sujet!="")) { //si champs pas vides
if(($mail) && (preg_match($verif, $mail))){ // si le mail est bon
if($_FILES['fichier']!="")
{
//----------------------------------
// Construction de l'entête
//----------------------------------
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
//----------------------------------
// Construction du message
//----------------------------------
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= "Raison sociale : $societe";
$msg .= "\r\n";
$msg .= "Nom : $nom";
$msg .= "\r\n";
$msg .= "Prénom : $prenom";
$msg .= "\r\n";
$msg .= "Statut : $sujet";
$msg .= "\r\n";
$msg .= "Adresse : ".$_POST['adresse1']."";
$msg .= "\r\n";
$msg .= "Téléphone : $tel";
$msg .= "\r\n";
$msg .= "Portable : $portable";
$msg .= "\r\n";
$msg .= $_POST['message1'];
$msg .= "\r\n";
//----------------------------------
// Pièce jointe
//----------------------------------
if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}
$destinataire = '[email protected]';
$expediteur = $_POST['mail'];
$reponse = $expediteur;
//on envoie le mail
mail($destinataire, 'dépot de CV', $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
}
if($name_file!="")
{
unlink($name_file);
}
print("<br>\n");
$success=true;
$message = "Votre demande $prenom $nom a été postée avec succès ! <br />
Elle sera traitée dans les meilleurs délais.<br />
Nous vous remercions de votre visite !";
}
else{
$verif=false;
$message= "Cette adresse Email n'est pas valide";
}
}else{
$success = false;
$message = "Merci de remplir les champs obligatoires";
}
?>
Merchi bcp !!!

Bonjour à tous :D
J'ai fait un formulaire avec pièce jointe, j'aurais besoin de votre aide pour le valider.
1. A savoir : rendre obligatoire l'envoi de fichier ce qui n'a pas l'air d'être le cas...le mail part quand même... :cry:
2. M'assurer que le fichier n'est pas autre qu'un .doc ou un .pdf
Je l'ai construit sur la base de tutos.
3. Comment éviter le hacking ? j'ai lu qquepart une fonction permettant de refuser l'envoi de documents php ou autres, mais je ne mets plus la main dessus.
4. si je mets une pièce jointe .jpg, j'ai ces messages d'erreur qui apparaissent et le formulaire part quand meme :roll:
[code]
Warning: fopen(cox.jpg): failed to open stream: No such file or directory in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 79
Warning: filesize(): Stat failed for cox.jpg (errno=2 - No such file or directory) in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 80
Warning: fread(): supplied argument is not a valid stream resource in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 80
Warning: fclose(): supplied argument is not a valid stream resource in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 81
Warning: unlink(cox.jpg): No such file or directory in d:\programmes\easyphp1-8\www\site\envoi_cv.php on line 107
[/code]
Voici une partie de mon code
[php]<?php
$success=false;
$message="";
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; // INIT DES VARIABLES
if(!isset($_POST['societe'])) $societe=""; else $societe=htmlentities(addslashes($_POST['societe']));
......
if(!isset($_FILES['fichier'])) $fichier=""; else $fichier=$_FILES['fichier'];
$name_file = $_FILES['fichier']['name'];
$source=$_FILES['fichier']['tmp_name'];
move_uploaded_file($source, "./".$name_file);
$extension=get_extension($name_file);
$type="text/plain";
if($type=="doc")
{
$type="text/vnd.ms-word";
}
$type2="application/pdf";
function get_extension($filename)
{
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}
//vérifications
if (($tel!="")&&($fichier!="")&&($nom!="")&&($prenom!="")&&($mail!="")&&($sujet!="")) { //si champs pas vides
if(($mail) && (preg_match($verif, $mail))){ // si le mail est bon
if($_FILES['fichier']!="")
{
//----------------------------------
// Construction de l'entête
//----------------------------------
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
//----------------------------------
// Construction du message
//----------------------------------
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= "Raison sociale : $societe";
$msg .= "\r\n";
$msg .= "Nom : $nom";
$msg .= "\r\n";
$msg .= "Prénom : $prenom";
$msg .= "\r\n";
$msg .= "Statut : $sujet";
$msg .= "\r\n";
$msg .= "Adresse : ".$_POST['adresse1']."";
$msg .= "\r\n";
$msg .= "Téléphone : $tel";
$msg .= "\r\n";
$msg .= "Portable : $portable";
$msg .= "\r\n";
$msg .= $_POST['message1'];
$msg .= "\r\n";
//----------------------------------
// Pièce jointe
//----------------------------------
if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}
$destinataire = '
[email protected]';
$expediteur = $_POST['mail'];
$reponse = $expediteur;
//on envoie le mail
mail($destinataire, 'dépot de CV', $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
}
if($name_file!="")
{
unlink($name_file);
}
print("<br>\n");
$success=true;
$message = "Votre demande $prenom $nom a été postée avec succès ! <br />
Elle sera traitée dans les meilleurs délais.<br />
Nous vous remercions de votre visite !";
}
else{
$verif=false;
$message= "Cette adresse Email n'est pas valide";
}
}else{
$success = false;
$message = "Merci de remplir les champs obligatoires";
}
?>[/php]
Merchi bcp !!! :lol: