Page 1 sur 1

Formulaire d'envoi de mail chez Free et vérification

Posté : 10 juil. 2007, 12:36
par Horse_Pyro
Bonjour,

Ne connaissant pas grand chose à PHP (jusque là je ne m'en servait que pour faire des include :wink: ), je me permet de vous demander un peu d'aide...

Je cherche à faire une vérification des champs remplis dans mon formulaire de mail...
Mon site est hébergé chez Free, mon code utilisé pour le formulaire est le suivant (trouvé sur le site de free) :

Code : Tout sélectionner

<form method="post" action="http://perso0.free.fr/cgi-bin/form2mail.pl"> <!-- le truc spécifié par Free --> <p> <label for="email_expediteur">Votre adresse e-mail :</label><br /> <input type="text" size="40" name="email_expediteur" id="email_expediteur" accesskey="e" value="Entrez votre adresse e-mail ici"/> </p> <p> <label for="titre">Titre de message :</label><br /> <input type="text" size="40" name="titre" id="titre" accesskey="t" value="Entrez le titre de votre message ici"/> </p> <p> <label for="message">Message :</label><br /> <textarea name="message" id="message" accesskey="m" cols="40" rows="5">Entrez votre message ici</textarea> </p> <p> <input type="submit" name="envoyer" accesskey="s" value="Envoyer" /> </p> </form>
Après moult recherches, j'ai l'impression qu'il faurait faire quelquechose du genre
  if (isset($_POST["envoyer"]))// le formulaire a été soumis
   {
    if (empty($_POST["email_expediteur"]))   // il manque l'email de l'expéditeur
      { 
      echo "Saisissez votre adresse email...";
      }
    elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"]))   // l'adresse e-mail n'est pas valide
      { 
       echo "Votre adresse e-mail n'est pas valide...";
      }
    elseif (empty($_POST["message"]))  // le message est vide
      { 
      echo "Saisissez un message...";
      }
  }
Seulement, vu que je suis une quiche en php, évidement, cela ne fonctionne pas, et mes nombreuses bidouilles n'y changent rien... :?

Pourriez vous éclairer ma lanterne ?

Merci beaucoup :)

Pyro

Posté : 10 juil. 2007, 17:11
par Sékiltoyai
Qu'est ce que tu appelles "marche pas", tu as un message d'erreur ? Qu'est ce que tu devrais obtenir et qu'est ce que tu obtiens ?

Posté : 10 juil. 2007, 17:50
par Horse_Pyro
Plus de précisions :

Ce que j'obtiens :

Et bien, aucune vérification n'est effectuée : je teste en "submittant" un message vide, sans adresse email, et aucun message stipulant qu'un des champs n'est pas correctemtn renseigné n'apparaît... et le mail (vide donc) envoyé par le formulaire arrive tout de même dans ma boîte mail :?

Ce que je voudrais :

Quand l'utilisateur clique sur le bouton "envoyer", s'il n'a pas correctement renseigné un champ, un petit message s'affiche, et lui demande de corriger.
Si quand il fait "envoyer", tout est ok, le mail part vers ma boîte mail...

Posté : 10 juil. 2007, 18:30
par Sékiltoyai
Peux tu donner le code complet parce qu'avec ca, on va pas pouvoir faire grand chose...

Posté : 10 juil. 2007, 18:46
par Horse_Pyro
Le code complet, cela rique d'être un peu long... par contre, la page incriminée est dispo à cette adresse : :arrow: http://wmarchitecture.free.fr/contact.php

Merci ! :wink:

[edit : j'ai enlevé la partie "vérification foireuse", pour que le formulaire en ligne reste opérationnel. Mais c'était la même que celle que j'ai posté plus haut]

Posté : 10 juil. 2007, 18:49
par Sékiltoyai
Oui mais moi je veux le code complet, pas la page...

Posté : 10 juil. 2007, 18:54
par Horse_Pyro
D'accord, alors voila :
<?php
if (isset($_POST["envoyer"]))// le formulaire a été soumis 
   { 
    if (empty($_POST["email_expediteur"]))   // il manque l'email de l'expéditeur 
      {  
      echo "Saisissez votre adresse email..."; 
      } 
    elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"]))   // l'adresse e-mail n'est pas valide 
      {  
       echo "Votre adresse e-mail n'est pas valide..."; 
      } 
    elseif (empty($_POST["message"]))  // le message est vide 
      {  
      echo "Saisissez un message..."; 
      } 
  }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <title>w.m.architecture : Contact</title>
  <meta name="Author" content="Pierre Chambrion" />
  <meta name="Copyright" content="WM architecture" />
  <meta name="Category" content="Agence d'architecture" />
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <meta name="description" content="Site de l'agence WM architecture à Nancy (54000) : page permettant de contacter directement l'agence" />
  <meta name="keywords" content="WM, WMA, architecture, architecte, architectes, agence, nancy, 54, 54000, lorraine, mail, email, adresse, contact, contacter, téléphone" />
  <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />

<!--liens affichés dans les navigateurs alternatifs et qui aident à la navigation (navigateur textuel Lynx, navigateur texte Links) -->
<link rel="home" title="w.m.architecture : Accueil" href="index2.php" />

<?php include('includes/menu.php'); ?> 


<!-- ____________________fil d'ariane____________________ -->
<div id="filariane" class="fil ariane"><a href="index2.php">Accueil</a> > <h1>Contact</h1></div>
<!-- ____________________fin du fil d'ariane____________________ -->



<a name="startcontent" id="startcontent" accesskey="2"></a> 

<div id="zoneactive">

<p><strong>WM architecture</strong><br />
courrier : 37, rue Sellier 54000 Nancy<br />
tél/fax : 03.83.35.41.76<br />
email : <img src="images/adressemail.jpg" height="10px" width="134px" alt="wmarchitecture(arobase)free(point)fr" title="wmarchitecture(arobase)free(point)fr" /></p>

<h2>Remplissez ce formulaire, puis cliquer sur le bouton "Envoyer". Le message nous parviendra directement.</h2>


<!-- ____________________formulaire____________________ -->



    <form method="post" action="http://perso0.free.fr/cgi-bin/form2mail.pl">  <!-- le truc spécifié par Free -->


    
    <p>
      <label for="email_expediteur">Votre adresse e-mail :</label><br />
      <input type="text" size="40" name="email_expediteur" id="email_expediteur" accesskey="e" value="Entrez votre adresse e-mail ici"/>

    </p>
    
    <p>
      <label for="titre">Titre de message :</label><br />
      <input type="text" size="40" name="titre" id="titre" accesskey="t" value="Entrez le titre de votre message ici"/>
      
    </p>
    
    <p>
      <label for="message">Message :</label><br />
      <textarea name="message" id="message" accesskey="m" cols="40" rows="5">Entrez votre message ici</textarea>
      
    </p>

    <p>
      <input type="submit" name="envoyer" accesskey="s" value="Envoyer" />
    </p>
    
  </form>
<?php 
 }  
 ?>
<!-- ____________________fin formulaire____________________ -->


</div>

<!-- ____________________pied de page____________________ -->
<?php include('includes/piedpage.php'); ?>

</body>
</html>
"menu.php", comme son nom l'indique, c'est le menu, et l'appel à la css (commun à toutes mes pages)

Posté : 10 juil. 2007, 18:57
par Sékiltoyai
Si ca c'est long comme code, qu'est ce que ca doit être un code court...

C'est normal que tu n'aies pas mis de tags <?php ?> avant et après ton code php de vérification ?

Posté : 11 juil. 2007, 09:25
par Horse_Pyro
C'était une erreur de copier/coller ! Désolé :oops:

Posté : 11 juil. 2007, 10:04
par Ryle
Le problème vient du fait que ton formulaire est directement envoyé au script perl de free : form2mail.pl

Du coup tu ne récupères à aucun moment les informations qui ont été saisies pour pouvoir les tester.... au mieux tu peux faire tes contrôle en javascript, ca n'est pas sécurisé, mais tes contrôles n'ont rien d'extrême non plus :) Sinon, il te faut envoyer ton formulaire à ton script de vérification en php qui devra ensuite, si la vérif aboutie, faire suivre les données au cgi...

Tout à fait

Posté : 11 juil. 2007, 11:54
par Horse_Pyro
J'ai résolu mon problème, la soluce, pour ceux que ça intéresse, est ici : http://www.developpez.net/forums/showth ... ost2286874 (désolé d'avoir fait jouer la concurrence :wink: , mais il fallait que je trouve une réponse vite...

Merci de m'avoir aidé en tout cas ! :D

A bientôt,

Pierre

Posté : 11 juil. 2007, 12:01
par Ryle
M'en fiche je l'ai grillé de 3 minutes :p

Par contre ça te fait recharger la page deux fois pour envoyer le formulaire, c'est un peu dommage... la solution javascript (quitte à utiliser ajax pour interroger le serveur et tester les valeurs) avant de soumettre le formulaire m'aurait paru plus propre et plus agréable pour l'utilisateur...