8797 sujets

Développement web côté serveur, CMS

Bonsoir,
je viens demander de l'aide dans un domaine que je ne maitrise pas du tout.
Je suis plutot graphiste papier et je cale sur un formulaire.
J'ai du mal à trouver sur le net la réponse précise à mon cas.
Normal, vu que j'ai aggloméré des morceaux de codes pris à droite et à gauche (en tentant de décrypter ce que je pouvais).
Si quelqu'un peut prendre un peu de temps pour me dépanner cela m'aiderait, je suis bloqué depuis une semaine et un peu démoralisé...

Alors voici le html du formulaire :

<FORM method="POST" action="envoimail.php" enctype="multipart/form-data">
<table border="0" cellpadding="5" cellspacing="1">

<tr>
  <td>Civilité :</td>
  <td><select name="sexe">
    <option value="Monsieur" selected="selected">M.</option>
    <option value="Madame">Mme</option>
    <option value="Mademoiselle">Melle</option>
  </select></td>
</tr>
<tr>
<td>Prénom :</td>
<td><input size=30 name="sender_prenom" maxlength="100"></td>
</tr>
<tr>
<td>Nom :</td>
<td><input size=30 name="sender_nom" maxlength="100"></td>
</tr>
<tr>
  <td>Adresse e-mail :</td>
  <td><input type="text" size="30" name="sender_email" maxlength="200" />  </td>
</tr>
<tr>
  <td>Téléphone :</td>
  <td><input type="text" size="12" name="sender_phone" maxlength="16" />  </td>
</tr>
<tr>
  <td>Code postal :</td>
  <td><input type="text" size="5" name="cp" maxlength="5" />  </td>
</tr>
<tr>
<td>Goûts</td>
<td><p>
<input type=checkbox name="choix1" value="Sucré" >
Sucré<br>
<input type=checkbox name="choix2" value="Salé" > 
Salé
<br>
<input type=checkbox name="choix3" value="Épicé" >
Épicé<br>
<input type=checkbox name="choix4" value="Autres" > 
Autres
<br>
</p></td>
</tr>
<tr>
<td>Plat</td>
<td><input type="radio" name="choix2" value="Entrée" onClick="fradio1(2,this.value)">Entrée<br>
<input type="radio" name="choix5" value="Plat principal" onClick="fradio1(2,this.value)">Plat principal<br>
<input type="radio" name="choix5" value="Fromages" onClick="fradio1(2,this.value)">Fromages<br>
<input type="radio" name="choix5" value="Dessert" onClick="fradio1(2,this.value)">Dessert</td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td colspan="2">Ajouter votre recette :</td>
  </tr>
<tr>
  <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
    <input type="file" name="attach" size="30" /></td>
  </tr>
<tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td colspan="2"><div align="center">
      <p><input type="submit" name="upload" value="Envoyer">
    </p></div></td>
  </tr>
</table>
</form>


et voici la page avec le php :

<?php
$msg = "Civilité :\t$sexe\n";
$msg .= "Prénom :\t$sender_prenom\n";
$msg .= "Nom :\t$sender_nom\n";
$msg .= "E-Mail :\t$sender_email\n";
$msg .= "Téléphone :\t$sender_phone\n";
$msg .= "Code postal :\t$cp\n";
$msg .= "Goûts :\t$choix1\n";
$msg .= "Goûts :\t$choix2\n";
$msg .= "Goûts :\t$choix3\n";
$msg .= "Goûts :\t$choix4\n";
$msg .= "Plat :\t$choix5\n";


$recipient = "xxxx@xxxx.fr";
$subject = "Recette";

$mailheaders = "From: Formulaire du site de recettes<> \n";
$mailheaders .= "Reply-To: $sender_email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

echo "<HTML><HEAD>";
echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci, $sexe $sender_prenom $sender_nom</H1>";
echo "<P align=center>";
echo "Votre recette a bien été envoyée.</P>";
echo "</BODY></HTML>"; 

?>


2 problèmes :
- J'ai biaisé pour la partie checkbox, ce n'est pas très propre et j'aimerai que dans le mail de retour apparaisse à la suite les goûts, séparée par des virgules.
- Il manque la partie de la pièce jointe dansle phph car je ne sais pas l'intégrer. (ce serait une pièce jointe en word, pdf, open office (?), un fichier texte.


Merci d'avance.
Modifié par nicofem (20 Sep 2008 - 12:52)
Bonjour,
je repasse sur le forum au cas où...

Smiley decu aïe c'est pas si simple ?

Merci quand même pour ceux qui auront pris le temps de lire ce topic.

Bon WE, il fait beau parfait pour quitter son écran. Smiley smile
Modérateur
Salut Nicofem et bienvenue sur le forum,

Là, je viens vite jeter un coup d'oeil sur ta page html et ton code php.

La mise en page tableau, il faut oublier pour de multiples raisons. Tu as un « tut » qui t'explique pourquoi et comment. C'est par ici

En ce qui concerne ton code php. Je te conseille vivement de filtrer tes superglobales afin d'éviter tout désagrément à la suite d'un internautes mal intentionné. Et là dans ton script je ne vois aucune superglobales.
En exemple (si je reprends une partie de ton ton script) :



<?php
$sexe=$_POST['sexe'];
$prenom=htmlentities($_POST['sender_prenom']);//rendre inoffensif les balises nocives.

//etc.

?>


Également, tu dois filtrer au plus les fichiers que tu vas recevoir. Connaître le poids l'extension, etc. Les superglobales pour l'envoi des fichiers est : $_FILE['attach']['name'], $_FILE['attach']['type'], $_FILE['attach']['tmp_name'], $_FILE['attach']['size'].

Je vois également que tu ne fais pas de test d'envoi de la fonction mail. C'est une petite étourderie, je pense. tu devrais faire à peu près ceci :


if(mail($recipient, $subject, $msg, $mailheaders)){
 echo "<HTML><HEAD>";//code invalide manque doctipe !
 echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
 echo "<H1 align=center>Merci, $sexe $sender_prenom  $sender_nom</H1>"; 
 echo "<P align=center>";
 echo "Votre recette a bien été envoyée.</P>";
 echo "</BODY></HTML>"; 
}else{
 header("location:formulaire_mail.html");//redirection de la page
}



J'espère t'avoir donner déjà un petit coup de main.

++
Modifié par Nolem (20 Sep 2008 - 21:39)
Smiley smile

Merci beaucoup pour ces premiers indices, qui en effet permettent de régler des failles si j'ai bien compris.
J'ai tenté d'appliquer, apparemment cela fonctionne.

Il me reste toujours le problème du fichier joint. Smiley biggol