[PHP] Intégration d'un champ 'joindre un fichier' dans un formulaire

Intégration d'un champ 'joindre un fichier' dans un formulaire [PHP] - PHP - Programmation

Marsh Posté le 24-04-2009 à 10:14:33    

Bonjour a tous,
 
Depuis quelques temps, j'ai cherché a créer un formulaire de contact. Après pas mal de recherches je suis tombé sur un formulaire qui me plaît assez, avec code de vérification et que j'ai formaté pour qu'il m'envoie un mail comme je le souhaite.
 
J'ai cherché par la suite pour ajouter un champ "joindre un fichier" et là je bloque. J'ai trouvé des lignes de codes me permettant d'implémenter ce champ mais sans succès ...
 
Je joint au message, la structure du formulaire si vous avez des idée de "comment bien implémenter" ce champ dans le code initial, j'ai pas trop envie de changer de script ...
 
Merci d'avance pour votre aide :)
 
formulaire.php

Code :
  1. <?php
  2. echo ' <div align="center">'."\n"."\n";
  3. if ($_GET['err_RetourEsp'] == "1" ) {
  4. echo ' <br /><Font face="Verdana" Size="2" Color="#FF0033"><b>Merci de ne pas utiliser ce Formulaire à des fins malveillante !!!!</b></font><br />';
  5. } else { echo ''; }
  6. if ($_GET['err_mail_arrobase'] == "1" ) {
  7. echo ' <br /><Font face="Verdana" Size="2" Color="#FF0033">Votre Adresse Mail n\'est pas Valide !</font><br />';
  8. } else { echo ''; }
  9. if ($_GET['ok'] == "1" ) {
  10. echo ' <br /><Font face="Verdana" Size="2" Color="#008800">Votre Mail à bien été envoyé.</font><br />';
  11. } else { echo ''; }
  12. if ($_GET['err_envoi'] == "1" ) {
  13. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Votre Mail n\'a pu être envoyé.<br />Essayez de refaire un essai..</font><br />';
  14. } else { echo ''; }
  15. echo '<form name="contactmail" method="post" action="contactmail.php" enctype="multipart/form-data" id="contactmail">'."\n"."\n";
  16. echo ' <p><font face="Verdana" Size="2">'."\n"."\n";
  17. echo ' <label for="mail">Votre adresse mail :</label><br />'."\n";
  18. echo ' <input type="text" id="mail" name="mail" size="20" maxlength="100" Value="'.$_GET['mail'].'" /><br /><br />'."\n"."\n";
  19. if ($_GET['err_mail'] == "1" ) {
  20. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Vous devez saisir une votre adresse mail !</font><br /><br />';
  21. } else { echo ''; }
  22. echo ' <label for="sujet">Sujet :</label><br />'."\n";
  23. echo ' <input name="sujet" type="text" size="20" maxlength="100" Value="'.$_GET['sujet'].'" /><br /><br />'."\n"."\n";
  24. if ($_GET['err_sujet'] == "1" ) {
  25. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Vous devez indiquer le Sujet !</font><br /><br />';
  26. } else { echo ''; }
  27. echo ' <label for="msg">Votre Message :</label><br />'."\n";
  28. echo ' <textarea name="msg" cols="40" rows="4">'.$_GET['msg'].'</textarea><br /><br />'."\n"."\n";
  29. if ($_GET['err_msg'] == "1" ) {
  30. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Vous devez saisir un Message !</font><br /><br />';
  31. } else { echo ''; }
  32. echo ' <img src="cryptimage.php" alt="image de securisation du formulaire" title="image de securisation du formulaire" /><br />'."\n"."\n";
  33. echo ' <label for="verif">Merci de recopier la combinaison ci dessus<br />dans le champ qui suit :</label><br /><br />'."\n";
  34. if ($_GET['err_code'] == "1" ) {
  35. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Le Code que vous avez saisi ne correspond pas au Code de Vérification !</font><br /><br />';
  36. } else { echo ''; }
  37. if ($_GET['err_session'] == "1" ) {
  38. echo ' <Font face="Verdana" Size="2" Color="#FF0033">Attention, la "Session" à expirée ou le "Code de Vérification" est incorrect !</font><br /><br />';
  39. } else { echo ''; }
  40. echo ' <input type="text" name="verif" size="10" maxlength="5" />'."\n";
  41. echo ' <br />'."\n";
  42. echo ' <input type="submit" value="Envoyer le mail" />'."\n"."\n";
  43. echo ' </font></p>'."\n";
  44. echo '</form>'."\n";
  45. echo ' </div>'."\n"."\n";
  46. ?>


 
cryptimage.php

Code :
  1. <?php
  2. // Démarage d'une session nécéssaire pour récupérer la valeur générée d'une page a l'autre :
  3. session_start();
  4. // on définie la liste qui va servir a récupérer les lettres qui formeront la valeur a saisir :  :
  5. // Les caractère suivant ont été enlevés pour éviter toutes confision : ilo01IO
  6. $liste = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
  7. // On créer une valeur qui sera notre code secret a saisir :
  8. $code = '';
  9. // On crée une boucle pour créer une chaine de 5 caractères pris au hasard au sein de la variable $liste :
  10. while(strlen($code) != 5)
  11. {
  12. $code .= $liste[rand(0,63)];
  13. }
  14. // on définit une variable de session nomée $_SESSION['code'] que l'on réutilisera plus tard :
  15. $_SESSION['code']=$code;
  16. // on crée une image de 50 pixels par 20 pixels :
  17. $larg = 50;
  18. $haut =20;
  19. $img = imageCreate($larg, $haut);
  20. $rouge = imageColorAllocate($img,200,200,200);
  21. $noir = imageColorAllocate($img,0,0,0);
  22. $code_police=5;
  23. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  24. header('Cache-Control: no-store, no-cache, must-revalidate');
  25. header('Cache-Control: post-check=0, pre-check=0', false);
  26. header("Content-type: image/jpeg" );
  27. // incorporation de la variable variable $code dans l'image :
  28. imageString($img, $code_police,($larg-imageFontWidth($code_police)*strlen("".$code."" ))/2,0, $code,$noir);
  29. // on crée une image de relative mauvaise qualité (ici 25% d'une image normale pour eviter la reconnaissance visuelle de certains robots :
  30. imagejpeg($img,'',25);
  31. imageDestroy($img);
  32. ?>


 
contactmail.php

Code :
  1. <?php
  2. // nous démarrons la session afin de récupérer la valeur codée :
  3. session_start();
  4. // Nous testons que la variable existe et qu'elle a bien la longueur souhaitée :
  5. if (!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5) { header('Location: ./formulaire.php?mail='.$_POST['mail'].'&msg='.$_POST['msg'].'&sujet='.$_POST['sujet'].'&err_session=1'); }
  6. // Vérification du Code de validation :
  7. if ($_SESSION['code'] != $_POST['verif'])  { header('Location: ./formulaire.php?mail='.$_POST['mail'].'&msg='.$_POST['msg'].'&sujet='.$_POST['sujet'].'&err_code=1'); }
  8. // on récupère le mail de la personne qui envoi le mail :
  9. $exp = $_POST['mail'];
  10. // Conversion en Minuscule :
  11. $exp = strtolower($exp);
  12. // on formate les chaines du sujet et du corps du mail :
  13. $sujet = "GENERAL";
  14. $msg = stripslashes($_POST['sujet']." par ".$_POST['mail']."\n"."\n".$_POST['msg']);
  15. // Vérification des Champs vides :
  16. if (empty($_POST['mail'])) { header('Location: ./formulaire.php?msg='.$_POST['msg'].'&sujet='.$_POST['sujet'].'&err_mail=1'); }
  17. elseif (empty($_POST['sujet'])) { header('Location: ./formulaire.php?mail='.$_POST['mail'].'&msg='.$_POST['msg'].'&err_sujet=1'); }
  18. elseif (empty($_POST['msg'])) { header('Location: ./formulaire.php?mail='.$_POST['mail'].'&sujet='.$_POST['sujet'].'&err_msg=1'); }
  19. // Vérification Adresse Mail :
  20. // On Bloque tout ce qui n'est une Lettre, un Tiret, un UnderScore, un Point ou  un Aobase.
  21. // On évite donc les Injections :
  22. elseif (eregi("[^a-z0-9_\-\.@]", $exp)) { header('Location: ./formulaire.php?err_RetourEsp=1'); }
  23. elseif (eregi("\\\r",$exp) || eregi("\\\n",$exp)){ header('Location: ./formulaire.php?err_RetourEsp=1'); }
  24. // On vérifi un la structure de l'adresse Mail :
  25. elseif (!ereg("([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+)", $exp)) { header('Location: ./formulaire.php?mail='.$_POST['mail'].'&msg='.$_POST['msg'].'&sujet='.$_POST['sujet'].'&err_mail_arrobase=1'); }
  26. // Si toutes les Vérifications sont Ok, on envoi le mail :
  27. elseif (ereg("([a-zA-Z0-9._-]+@{1,}[a-zA-Z0-9._-]+\.[a-zA-Z]+)", $exp))
  28. {
  29. // envoi du mail :
  30. $envoi = mail(" mon email ", $sujet, $msg, "From: $exp" );
  31. if($envoi) {
  32. header('Location: ./formulaire.php?ok=1');
  33. }
  34. else {
  35. header('Location: ./formulaire.php?mail='.$_POST['mail'].'&msg='.$_POST['msg'].'&sujet='.$_POST['sujet'].'&err_envoi=1');
  36. }
  37. // on efface et détruit les varaibles de sessions :
  38. }
  39. session_unset();
  40. session_destroy();
  41. ?>

Reply

Marsh Posté le 24-04-2009 à 10:14:33   

Reply

Marsh Posté le 26-04-2009 à 12:31:35    

pas de piste ? un avis ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed