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

Horse_Pyro
Invité n'ayant pas de compte PHPfrance

10 juil. 2007, 12:36

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

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 17:11

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 ?

Horse_Pyro
Invité n'ayant pas de compte PHPfrance

10 juil. 2007, 17:50

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...

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 18:30

Peux tu donner le code complet parce qu'avec ca, on va pas pouvoir faire grand chose...

Petit nouveau ! | 4 Messages

10 juil. 2007, 18:46

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]
Modifié en dernier par Horse_Pyro le 10 juil. 2007, 18:49, modifié 1 fois.

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 18:49

Oui mais moi je veux le code complet, pas la page...

Petit nouveau ! | 4 Messages

10 juil. 2007, 18:54

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)

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 18:57

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 ?

Petit nouveau ! | 4 Messages

11 juil. 2007, 09:25

C'était une erreur de copier/coller ! Désolé :oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 10:04

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

11 juil. 2007, 11:54

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 12:01

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...