Validation d'un formulaire
Bonjour à tous
Je sais que les questions doivent être posées tous les jours.
J'ai fait un formulaire, mais la difficulté qu'il représente pour moi et que j'y intègre l'envoi de pièce jointe. :mrgreen:
J'aimerai, si possible, que vous m'aidiez à le valider, car j'ai l'impression que mes vérifs semblent ne pas être correctes !
Je vous mets un bout de mon code et merci bcp de votre aide :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| <?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'];
$typemime = $_FILES['fichier']['type'];
$taille = $_FILES['fichier']['size'];
// extensions autorisées
$extensions_ok = array('txt', 'doc', 'rtf', 'pdf');
// la taille maximale du fichier en octets, ici 2mo
$taille_max = 2097152;
move_uploaded_file($source, "./".$name_file);
//----------------------------------
// Construction de l'entête
//----------------------------------
if (($fichier!="")&&($tel!="")&&($nom!="")&&($prenom!="")&&($mail!="")&&($sujet!="")) { //si champs vides
if(($mail) && (preg_match($verif, $mail))){ // si le mail est bon
if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) ) { //si bon format
if( file_exists($source) && $taille > $taille_max) { // si taille autorisée
if($_FILES['fichier']!="")
{
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$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: $typemime; 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";
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: $typemime; 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 = 'toto@neuf.fr';
$expediteur = $_POST['mail'];
$reponse = $expediteur;
mail($destinataire, 'Envoi de fichier', $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
}
if($name_file!="")
{
unlink($name_file);
}
print("<br>\n");
//----------------------------------
// Construction de l'entête
//----------------------------------
$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{
$sucess = false;
$message = 'Extension non autorisée !';
}
}else{
$sucess = false;
$message = 'Votre fichier doit faire moins de 2mo !';
}
}else{
$verif=false;
$message= "Cette adresse Email n'est pas valide";
}
}else{
$success = false;
$message = "Merci de remplir les champs obligatoires";
}
?> |
Le formulaire semble partir quand meme ou alors bloque sur le meme message d'erreur : taille sup à 2mo
merci !:D