Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
558 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire (upload de fichier)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire (upload de fichier)

n°1947821
mTa
Posté le 07-12-2009 à 10:23:29  profilanswer
 

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
mood
Publicité
Posté le 07-12-2009 à 10:23:29  profilanswer
 

n°1947894
stealth35
Posté le 07-12-2009 à 13:45:15  profilanswer
 

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
n°1947901
mTa
Posté le 07-12-2009 à 14:10:50  profilanswer
 

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

n°1948086
stealth35
Posté le 07-12-2009 à 17:41:58  profilanswer
 

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
n°1948371
mTa
Posté le 08-12-2009 à 14:13:45  profilanswer
 

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!

n°1949337
mTa
Posté le 11-12-2009 à 10:19:54  profilanswer
 

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
n°1949361
stealth35
Posté le 11-12-2009 à 11:00:19  profilanswer
 

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

n°1949374
mTa
Posté le 11-12-2009 à 11:16:16  profilanswer
 

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

n°1949394
stealth35
Posté le 11-12-2009 à 11:41:26  profilanswer
 

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

n°1949396
mTa
Posté le 11-12-2009 à 11:49:34  profilanswer
 

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

mood
Publicité
Posté le 11-12-2009 à 11:49:34  profilanswer
 

n°1949860
mTa
Posté le 13-12-2009 à 16:24:44  profilanswer
 

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.

n°1949870
stealth35
Posté le 13-12-2009 à 17:26:10  profilanswer
 

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

n°1949879
mTa
Posté le 13-12-2009 à 17:50:30  profilanswer
 

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";

n°1949903
stealth35
Posté le 13-12-2009 à 20:02:36  profilanswer
 

tu edites tes fichiers avec logiciel ?

n°1949926
mTa
Posté le 13-12-2009 à 22:27:02  profilanswer
 

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

n°1949937
stealth35
Posté le 13-12-2009 à 23:36:41  profilanswer
 

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')

n°1950864
mTa
Posté le 16-12-2009 à 12:43:34  profilanswer
 

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 =)

n°1950879
stealth35
Posté le 16-12-2009 à 13:29:18  profilanswer
 

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

n°1997289
jaydt
Posté le 30-05-2010 à 19:18:10  profilanswer
 

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.

n°1997439
stealth35
Posté le 31-05-2010 à 10:27:51  profilanswer
 

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
n°1997608
jaydt
Posté le 31-05-2010 à 16:13:33  profilanswer
 

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

n°1997630
stealth35
Posté le 31-05-2010 à 17:02:19  profilanswer
 

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

n°1997654
jaydt
Posté le 31-05-2010 à 17:38:42  profilanswer
 

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.

n°1997655
stealth35
Posté le 31-05-2010 à 17:41:00  profilanswer
 

ouai envoie en MP

n°1997659
stealth35
Posté le 31-05-2010 à 17:50:38  profilanswer
 

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

n°1997665
jaydt
Posté le 31-05-2010 à 18:05:08  profilanswer
 

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

n°1997667
stealth35
Posté le 31-05-2010 à 18:22:09  profilanswer
 

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

n°1997675
jaydt
Posté le 31-05-2010 à 19:41:07  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire (upload de fichier)

 

Sujets relatifs
[resolu] Formulaire avec upload qui renomme mon fichierFormulaire : envoi de mail et upload de fichier en un coup
Probleme formulaire d'upload, renommer le fichierFormulaire upload fichier = mauvais dossier [resolu]
[php] probleme upload fichier par formulaireformulaire :--> upload d'un fichier image
[php] upload de fichier + envoie de formulaire[asp] upload de fichier et formulaire
[ PHP ] - formulaire - upload de fichier sur un serveur.Cherche un hebergeur PHP permettant upload de fichier via formulaire
Plus de sujets relatifs à : Formulaire (upload de fichier)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR