Formulaire (upload de fichier)

Formulaire (upload de fichier) - PHP - Programmation

Marsh Posté le 07-12-2009 à 10:23:29    

Bonjour tout le monde,

 

je dois assez urgemment mettre en ligne un site pour mon boulot. J'ai pu le réaliser grâce à mes bases en html/css mais je bloque sur un formulaire car je ne connais rien au php. J'ai fais le formulaire en html, je sais qu'il doit pointer vers un fichier php en revanche je ne sais pas quoi mettre dedans. Je ne connais rien au php. Il faudrait que je reçoive par mail les réponses au formulaire et que les gens puissent envoyer leur cv (soit stocké sur le ftp soit envoyé par mail en pièce jointe.
Quelqu'un pourrait-il me donner le code à insérer dans le fichier php?

 

Merci beaucoup par avance!

 

PS: Voici le code html du formulaire

 
Code :
  1. <div id="content">
  2. <form method="post" action="Candidature.php" ENCTYPE="multipart/form-data" name="Candidature" value="Candidature_SecondJob">
  3. <table style="text-align: left; width: 548px; height: 280px;" border="0" cellpadding="2" cellspacing="2">
  4. <tbody>
  5. <tr>
  6. <td> Civilit&eacute;
  7. <div id="civilite"> <input name="Civilit&eacute;" value="Mlle" type="radio" /> Mlle&nbsp;<input name="Civilit&eacute;" value="Mme" type="radio" />
  8. Mme&nbsp;<input name="Civilit&eacute;" value="M." type="radio" />&nbsp;M.
  9. </div>
  10. Nom
  11. <div id="nom"> <input name="Nom" /> </div>
  12. Pr&eacute;nom
  13. <div id="prenom"> <input name="Prenom" />
  14. </div>
  15. T&eacute;l&eacute;phone
  16. <div id="tel"> <input name="Telephone" />
  17. </div>
  18. E-mail
  19. <div id="mail"><input name="E-mail" />
  20. </div>
  21. <div id="mail">
  22. </div>
  23. </td>
  24. <td>Adresse
  25. <div id="adresse"><textarea cols="16" rows="4" name="Adresse"></textarea> </div>
  26. Code Postal
  27. <div id="cp"> <input name="Code postal" />
  28. </div>
  29. Ville
  30. <div id="ville"><input name="Ville" />
  31. </div>
  32. </td>
  33. </tr>
  34. </tbody>
  35. </table>
  36. <table style="text-align: left; width: 569px; height: 211px;" border="0" cellpadding="2" cellspacing="2">
  37. <tbody>
  38. <tr>
  39. <td> CV
  40. <div id="cv"> <input name="CV" size="51" type="file" />
  41. <div id="txtcv"> Votre fichier
  42. doit etre de la forme <span style="font-weight: bold;">cv-nom-prenom</span>
  43. ainsi qu'&ecirc;tre au format <span style="font-weight: bold;">doc</span>
  44. ou <span style="font-weight: bold;">pdf</span>. </div>
  45. </div>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>
  50. Remarque
  51. <div id="remarque"> <textarea cols="50" rows="5" name="Remarque"></textarea> </div>
  52. </td>
  53. </tr>
  54. <tr>
  55. <td>
  56. <div id="send"> <input value="envoyer" type="submit" /> </div>
  57. </td>
  58. </tr>
  59. </tbody>
  60. </table>
  61. </form>
  62. </div>


Message édité par mTa le 07-12-2009 à 14:10:09
Reply

Marsh Posté le 07-12-2009 à 10:23:29   

Reply

Marsh Posté le 07-12-2009 à 13:45:15    

met les balises code, on voi pas grand chose la
[code ]mon code[/code]


Message édité par stealth35 le 07-12-2009 à 13:45:31
Reply

Marsh Posté le 07-12-2009 à 14:10:50    

Voilà c'est fait!
 
Merci d'avance.

Reply

Marsh Posté le 07-12-2009 à 17:41:58    

mTa a écrit :

Voilà c'est fait!

 

Merci d'avance.


bon j'ai fait ce que j'ai pu, le mieux pour ca etant d'utilisé des frameworks (PEAR::Mail, Zend_Mail..., l'extention imap est pas mal non plus),
la c'est dans le hyper basique, donc a prendre avec des pincettes.

 

index.php

 
Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.    <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5.         <title>Candidature</title>
  6.         <style type="text/css" media="all">            
  7.             <!--
  8.             body, input, textarea{
  9.                 font-family:'Segoe UI',Arial,Verdana,Helvetica,sans-serif;
  10.                 color:#333333;
  11.                 font-size:13px
  12.             }
  13.             form dl{
  14.                 padding:5px;
  15.                 margin:0 20px;
  16.             }
  17.             form dt{
  18.                 padding:10px 0;
  19.             }
  20.             form dt label{
  21.                 font-weight:bold;
  22.             }
  23.             form dd{
  24.                 margin:0 10px;
  25.             }
  26.             form input[type=text]{
  27.                 width:220px;
  28.             }
  29.             form .info{
  30.                 color:#ff3333;
  31.                 margin:5px 0;
  32.             }
  33.             form button{
  34.                 background-color:#EAEBEE;
  35.                 border:1px outset #CCCCCC;
  36.                 padding:0.3em 1em;
  37.             }
  38.             fieldset{
  39.                 border:1px solid #d0d0d0;
  40.             }
  41.             legend{
  42.                 font-weight:bold;
  43.                 font-size:18px;
  44.             }
  45.             -->
  46.         </style>
  47.     </head>
  48.     <body>
  49.     <form method="post" action="send.php" enctype="multipart/form-data">
  50.         <fieldset>
  51.             <legend>Candidature</legend>
  52.             <dl style="float:left">
  53.                 <dt><label for="civilite">Civilité</label></dt>
  54.                 <dd>
  55.                     <select id="civilite" name="civilite">
  56.                         <option value="melle">Mlle</option>
  57.                         <option value="mme">Mme</option>
  58.                         <option value="m">M.</option>
  59.                     </select>
  60.                 </dd>
  61.                 <dt><label for="nom">Nom</label></dt>
  62.                 <dd><input type="text" id="nom" name="nom" value=""/></dd>
  63.                 <dt><label for="prenom">Prénom</label></dt>
  64.                 <dd><input type="text" id="prenom" name="prenom" value=""/></dd>
  65.                 <dt><label for="telephone">Téléphone</label></dt>
  66.                 <dd><input type="text" id="telephone" name="telephone" value=""/></dd>
  67.                 <dt><label for="email">Email</label></dt>
  68.                 <dd><input type="text" id="email" name="email" value=""/></dd>
  69.             </dl>
  70.             <dl style="float:left">
  71.                 <dt><label for="adresse">Adresse</label></dt>
  72.                 <dd><textarea id="adresse" name="adresse" rows="3" cols="26"></textarea></dd>
  73.                 <dt><label for="codepostal">Code postal</label></dt>
  74.                 <dd><input type="text" id="codepostal" name="codepostal" value=""/></dd>
  75.                 <dt><label for="ville">Ville</label></dt>
  76.                 <dd><input type="text" id="ville" name="ville" value="" /></dd>
  77.             </dl>
  78.             <dl style="clear:both">
  79.                 <dt><label for="cv">CV</label></dt>
  80.                 <dd><input type="file" id="cv" name="cv" /></dd>
  81.                 <dd class="info">Votre fichier doit etre de la forme cv-nom-prenom ainsi qu'être au format doc ou pdf.</dd>
  82.                 <dt><label for="remarque">Remarque</label></dt>
  83.                 <dd><textarea  id="remarque" name="remarque" rows="8" cols="75"></textarea></dd>
  84.                 <dt></dt>
  85.                 <dd><button type="submit">Envoyer</button></dd>
  86.             </dl>
  87.         </fieldset>
  88.     </form>
  89.     </body>
  90. </html>
 


send.php

 
Code :
  1. <?php
  2.     ini_set('SMTP', 'ton-server');
  3.     ini_set('sendmail_from', 'ton-mail');
  4.  
  5.     $post = (object) $_POST;
  6.     
  7.     foreach($post as $value)
  8.     {
  9.         if(empty($value))
  10.         {
  11.             exit('Tout les champs ne sont pas remplis');
  12.         }
  13.     }
  14.     
  15.     if(!filter_var($post->email, FILTER_VALIDATE_EMAIL))
  16.     {
  17.         exit("Le mail n'est pas valide" );
  18.     }
  19.     
  20.     $email         = ini_get('sendmail_from');
  21.     $subject     = "Candidature de $post->civilite $post->nom $post->prenom";
  22.  
  23.     ob_start();
  24.     require 'template.php';
  25.     
  26.     $html = ob_get_clean();
  27.  
  28.     $boundary = '-----=' . md5(uniqid(rand()));
  29.     
  30.     $head[]        = "Reply-to: {$post->email}";
  31.     $head[]        = "Form: {$email}";
  32.     $head[]     = "MIME-Version: 1.0";
  33.     $head[]     = "Content-Type: multipart/related; boundary=\"$boundary\"";
  34.     $head[]     = '';
  35.     
  36.     $msg[]        = "--$boundary";
  37.     $msg[]         = "Content-Type: text/html; charset=\"utf-8\"";
  38.     $msg[]         = "Content-Transfer-Encoding:8bit";
  39.     $msg[]         = '';
  40.     $msg[]        = $html;
  41.     $msg[]        = '';
  42.     
  43.     if(isset($_FILES))
  44.     {
  45.         $file             = current($_FILES);
  46.         
  47.         if($file['error'] == 0)
  48.         {
  49.             $attachment     = chunk_split(base64_encode(file_get_contents($file['tmp_name'])));
  50.             unlink($file['tmp_name']);
  51.             
  52.             $msg[]         = "--$boundary";    
  53.             $msg[]         = "Content-Type: application/octet-stream; name=\"{$file['name']}\"";
  54.             $msg[]        = "Content-Transfer-Encoding: base64";
  55.             $msg[]        = "Content-Disposition: attachment; filename=\"{$file['name']}\"";
  56.             $msg[]        = '';
  57.             $msg[]        = $attachment;
  58.             $msg[]        = '';
  59.         }
  60.     }
  61.     
  62.     $msg[]         = "--$boundary--";
  63.     $msg[]        = '';    
  64.     
  65.     $header        = implode(PHP_EOL, $head);
  66.     $message    = implode(PHP_EOL, $msg);
  67.     
  68.     $mail = mail($email, $subject, $message, $header);
  69.     
  70.     if($mail)
  71.     {
  72.         echo 'Candidature envoyé';
  73.     }
  74.     else
  75.     {
  76.         echo 'Pas envoyé';
  77.     }
 


template.php

 
Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.    <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5.         <title>Mail</title>
  6.     </head>
  7.     <body>
  8.         <h1>Candidature de <?php echo $post->civilite ?> <?php echo $post->nom ?> <?php echo $post->prenom ?></h1>
  9.         <ul>
  10.             <li>telephone : <?php echo $post->telephone ?></li>
  11.             <li>e-mail : <?php echo $post->email ?></li>
  12.             <li>adresse : <?php echo $post->adresse ?></li>
  13.             <li>code-postal : <?php echo $post->codepostal ?></li>
  14.             <li>ville : <?php echo $post->ville ?></li>
  15.         </ul>
  16.         <div>
  17.             <h2>Remarque</h2>
  18.             <p><?php echo nl2br($post->remarque) ?></p>
  19.         </div>
  20.     </body>
  21. </html>
  



Message édité par stealth35 le 07-12-2009 à 17:48:34
Reply

Marsh Posté le 08-12-2009 à 14:13:45    

Merci énormément pour ton aide :)
Je vais me pencher sur ce code pour essayer de le comprendre!
 
Je le test et je t'en donne des nouvelles =)
 
Merci encore!

Reply

Marsh Posté le 11-12-2009 à 10:19:54    

Parfait il fonctionne à merveille! Je te remercie.
 
Il y avait juste un petit soucis il me disait un truc du genre "error on line 16 in send.php"
 
dans mon fichier la ligne 16 correspondant à ca:

Code :
  1. if(!filter_var($post->email, FILTER_VALIDATE_EMAIL))


 
j'ai enlevé tout ca:

Code :
  1. if(!filter_var($post->email, FILTER_VALIDATE_EMAIL))
  2.     {
  3.         exit("Le mail n'est pas valide" );
  4.     }


 
et maintenant cela fonctionne. Du coup il ne vérifie plus la validité de l'email en revanche.
 
Merci de ton aide!


Message édité par mTa le 11-12-2009 à 10:37:47
Reply

Marsh Posté le 11-12-2009 à 11:00:19    

ca depen de ta version de PHP, t'as quelle version ?, sinon t'es chez qui comme herbergeur ?

Reply

Marsh Posté le 11-12-2009 à 11:16:16    

Euh je ne sais pas qu'elle est la version, j'imagine que c'est la dernière. L'hébergeur est OVH.

Reply

Marsh Posté le 11-12-2009 à 11:41:26    

un simple fichier php a faire
 

Code :
  1. <?php phpinfo() ?>


 
par defaut ovh met la dernier version de la branch 4
pour activer php5 c'est par ici
http://guide.ovh.com/Php5ChezOvh

Reply

Marsh Posté le 11-12-2009 à 11:49:34    

Ca marche je test dès que possible en activant php5.
 
Je te remercie une fois de plus.

Reply

Marsh Posté le 11-12-2009 à 11:49:34   

Reply

Marsh Posté le 13-12-2009 à 16:24:44    

j'ai renommé en send.php5 et tout fonctionne.
 
Je t'embête une dernière fois: les accents ne fonctionne pas, j'ai un petit signe bizarre avec un "?" sur le formulaire ainsi que dans l'email reçu.
 
Sais tu comment je peux régler ca?
 
Merci d'avance.

Reply

Marsh Posté le 13-12-2009 à 17:26:10    

verfie que ton fichier send.php soit bien encodé en utf-8

Reply

Marsh Posté le 13-12-2009 à 17:50:30    

je n'y connais rien mais j'ai ceci dans le code que tu m'as donné:

Code :
  1. $msg[]         = "Content-Type: text/html; charset=\"utf-8\"";
  2.           $msg[]         = "Content-Transfer-Encoding:8bit";

Reply

Marsh Posté le 13-12-2009 à 20:02:36    

tu edites tes fichiers avec logiciel ?

Reply

Marsh Posté le 13-12-2009 à 22:27:02    

avec notepad++
J'ai quelque fois utilisé NVU mais c'est très rare, il m'embete plus qu'autre chose.

Reply

Marsh Posté le 13-12-2009 à 23:36:41    

dans notepad++  tu va dans encodage et tu met  convertir en utf-8 sans bom
 
tu peu rajouté tout en haut de ton fichier php
 
ini_set('default_charset', 'utf-8')

Reply

Marsh Posté le 16-12-2009 à 12:43:34    

aie aie aie :(
 
J'ai cliqué sur encoder en utf-8 (sans bom) et ai enregistré le fichier. Mais rien ne change.
D'ailleurs quand je réouvre le fichier le cursuer est placé sur ansi et non sur utf-8.
 
J'ai aussi ajouté la ligne de commande mais maintenant le site me répond ça:
 
ini_set('default_charset', 'utf-8')
Warning: Wrong parameter count for ini_set() in /homez.42/secondjo/www/send2.php5 on line 4
Demande envoyée
 

Code :
  1. <?php
  2.   ini_set('SMTP', 'smtp.second-job.fr', 'default_charset', 'utf-8');
  3.   ini_set('sendmail_from', 'meteora_n@hotmail.com');
  4.   $post = (object) $_POST;
  5.   foreach($post as $value)


 
C'est mon dernier petit soucis, merci de ton aide =)

Reply

Marsh Posté le 16-12-2009 à 13:29:18    

ouai ca marche pas comme ca
c'est  
 

Code :
  1. ini_set('default_charset', 'utf-8');
  2. ini_set('SMTP', 'smtp.second-job.fr');
  3. ini_set('sendmail_from', 'meteora_n@hotmail.com');


 
verifie bien aussi que les autre fichier soit en utf8

Reply

Marsh Posté le 30-05-2010 à 19:18:10    

Bonjour à tous  
et Merci à l'auteur pour ce code tres propre
même si les posts datent, je voudrais apporter une modification.
Plutôt une amelioration pour ceux qui maitrisent peu php comme moi (html et css acquis)
 
Comment introduire les differents messages d'alerte dans la même page (où se trouve le formulaire)
actuellement ces messages s'ouvrent tous en _blank (exemple : 'un champ est vide' etc)
je pense qu'il existe une balise pour ça du type 'echo'
 
Merci à ceux qui pourront m'aider.

Reply

Marsh Posté le 31-05-2010 à 10:27:51    

non il s'ouvre pas en _blank, sauf si ta mis ce paramètre dans ton formulaire, tu peux aussi regarder du coté javascript pour ca ca dynamiquement coté client


Message édité par stealth35 le 31-05-2010 à 10:28:37
Reply

Marsh Posté le 31-05-2010 à 16:13:33    

je n'ai touché à rien. j'ai simplement copié ton code. tout fonctionne mais les messages d'alertes s'ouvrent bien en blank. D'ou ma question. Quel interet aurais je à poser cette question sinon ? merci. je ne maitrise pas javascript

Reply

Marsh Posté le 31-05-2010 à 17:02:19    

ca devrait pas s'ouvrir en _blank, puisque que tu valides juste le formulaire, quel est ton navigateur ?

Reply

Marsh Posté le 31-05-2010 à 17:38:42    

ah. Navigateur Firefox 3.5. Je peux te montrer mes URL si tu veux. Mais pas public . Merci de ta réactivité en tous cas.

Reply

Marsh Posté le 31-05-2010 à 17:41:00    

ouai envoie en MP

Reply

Marsh Posté le 31-05-2010 à 17:50:38    

ca fait pas de _blank, un _blank ca t'ouvre une nouvelle fenetre ou un autre onglet

Reply

Marsh Posté le 31-05-2010 à 18:05:08    

C'est ce qui se passe chez moi. Donc tu penses que c'est Firefox 3.5 ? Quelle serait la solution si tu en as une ? Merci

Reply

Marsh Posté le 31-05-2010 à 18:22:09    

bizarre, la solution c'est d'afficher le message en javascript via ajax, ou de reecrire la page en ajoutant les erreurs

Reply

Marsh Posté le 31-05-2010 à 19:41:07    

ok je ne saurais pas faire. merci de ton feedback en tous cas  
+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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