Problème formulaire

Problème formulaire - PHP - Programmation

Marsh Posté le 25-08-2006 à 21:54:11    

Bonjour, j'ai quelques soucis avec un formulaire PHP.
Mon formulaire comprends "3 pages" : l'une avec le formulaire même, l'une avec les fonctions pour envoyer sur l'e-mail du destinaire et la dernière qui est une page de confirmation de l'envoi qui retourne automatiquement sur le formulaire après 3 secondes.
 
Voici le code de la page du formulaire
 
contact.php
 
<form method="post" action="Envoyer_Email.php">
 
<table width="100%" border="0">
  <tr>
    <td width="15%" valign="top"><font size="2">Nom : </font></td>
    <td width="85%"><font size="2">
      <input type="text" name="v_nom" id="v_nom" size="20">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">Prénom : </font></td>
    <td><font size="2">
      <input type="text" name="v_prenom" id="v_prenom2" size="20">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">Adresse : </font></td>
    <td><font size="2">
      <input type="text" name="v_adresse" id="v_adresse2" size="30">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">NPA : </font></td>
    <td><font size="2">
      <input type="text" name="v_npa" id="v_npa2" size="10">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">Localité : </font></td>
    <td><font size="2">
      <input type="text" name="v_localite" id="v_localite2" size="30">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">Adresse e-mail : </font></td>
    <td><font size="2">
      <input type="text" name="v_adresse_email" id="v_adresse_email2" size="30">
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">Remarque : </font></td>
    <td><font size="2">
      <textarea name="v_remarque" id="textarea" cols=40 rows=7></textarea>
    </font></td>
  </tr>
  <tr>
    <td valign="top"><font size="2">&nbsp;</font></td>
    <td><font size="2">
      <input name="submit" type="submit" value="Envoyer">
    </font></td>
  </tr>
</table>
  </form>
 
Envoyer_Email.php
 
<?
function validate_email($Adresse_email){
 $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
 if(eregi($exp,$Adresse_email)){
   if(checkdnsrr(array_pop(explode("@",$Adresse_email)),"MX" )){
     return true;
   }else{
     return false;
   }
 }else{
   return false;
 }    
}
$Nom=$HTTP_POST_VARS['v_nom'];
$Prénom=$HTTP_POST_VARS['v_prenom'];
$Adresse=$HTTP_POST_VARS['v_adresse'];
$Npa=$HTTP_POST_VARS['v_npa'];
$Localité=$HTTP_POST_VARS['v_localite'];
if (isset($HTTP_POST_VARS['v_adresse_email']) and validate_email($Adresse_email))
{
  $Adresse_email=$HTTP_POST_VARS['v_adresse_email'];
}
else
{
  $Adresse_email=null;
}
$Remarque=$HTTP_POST_VARS['v_remarque'];
$contenu="demande d'information de la part de\n";
$contenu.= "nom : ".$Nom."\n";
$contenu.= "prenom : ".$Prénom."\n";
$contenu.= "adresse : ".$Adresse."\n";
$contenu.= "npa : ".$Npa."\n";
$contenu.= "localite : ".$Localité."\n";
$contenu.= "adresse_email : ".$Adresse_email."\n";
$contenu.= "remarque : ".$Remarque."\n";
   $headers  = "MIME-Version: 1.0\n";
   $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
   $headers .= "X-Priority: 3\n";
   $headers .= "X-MSMail-Priority: Normal\n";
   $headers .= "X-Mailer: php\n";
   $headers .= "From: \"".$Adresse_email."\" <".$Adresse_email.">\n \r\n\r\n";
mail("monemail@hotmail.com", "demande d'information", $contenu, $headers);
echo "mail ok";
header("Location: envoyer.php" );
?>
 
envoyer.php
 
<script language="JavaScript">
function redirect() {
 window.location="../page/formreservation2.php"
}
setTimeout("redirect()",3000); // delai en millisecondes
</script>
L'email a bien &eacute;t&eacute; envoy&eacute;.
<p>Retour &agrave; la page de r&eacute;servation</p>
 
 
 
 
Lors de l'envoi du formulaire, voici ce que m'affiche le navigateur :
 
Notice: Undefined variable: Adresse_email in c:\program files\easyphp1-8\www\page\envoyer_email.php on line 51
mail ok
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\page\envoyer_email.php:51) in c:\program files\easyphp1-8\www\page\envoyer_email.php on line 111

 
les lignes bleues sont les lignes "qui posent problème".
 
Please, help me !

Reply

Marsh Posté le 25-08-2006 à 21:54:11   

Reply

Marsh Posté le 25-08-2006 à 22:15:43    

ça ressemble a du copier coller pris sur un tuto douteux  :)  

 

if (isset($HTTP_POST_VARS['v_adresse_email']) and validate_email($Adresse_email))
=> if (isset($HTTP_POST_VARS['v_adresse_email']) and validate_email($HTTP_POST_VARS['v_adresse_email']) )

 


echo "mail ok";
header("Location: envoyer.php" );
=> tu vires le echo  
 
et maintenant on utilise $_POST et pas $HTTP_POST_VARS

Message cité 1 fois
Message édité par subtil le 25-08-2006 à 22:18:03
Reply

Marsh Posté le 25-08-2006 à 22:21:07    

subtil a écrit :

ça ressemble a du copier coller pris sur un tuto douteux  :)  


 
Perso je l'ai pas pris sur un tuto spécial, c'est une source qu'il y avait à l'école (possible Dreamweaver !)  :)

Reply

Marsh Posté le 25-08-2006 à 22:59:30    

isset($HTTP_POST_VARS['v_adresse_email']) and validate_email($Adresse_email)
 
normal, quand tu appelles validate_email(), $adresse_email n'est pas encore défini. Tu dois appeler validate_email() sur $HTTP_POST_VARS['v_adresse_email']

Message cité 1 fois
Message édité par axelazerty le 25-08-2006 à 22:59:43
Reply

Marsh Posté le 25-08-2006 à 23:28:42    

axelazerty a écrit :

isset($HTTP_POST_VARS['v_adresse_email']) and validate_email($Adresse_email)
 
normal, quand tu appelles validate_email(), $adresse_email n'est pas encore défini. Tu dois appeler validate_email() sur $HTTP_POST_VARS['v_adresse_email']


 
Désolé, je suis pas très fort en PHP et je ne comprends pas vraiment ce que tu veux dire par là (ouais je sais je suis "noob" lol). Pourrais-tu m'expliquer un peu autrement stp.
 
A subtil : après avoir mis ta ligne, il y a une autre erreur  
 
Fatal error: Call to undefined function: checkdnsrr() in c:\program files\easyphp1-8\www\page\envoyer_email.php on line 13

Reply

Marsh Posté le 25-08-2006 à 23:33:36    

dans ton if() tu appelles validate_email(). Le paramètre est $Adresse_email. Or, cette variable $Adresse_email n'est définie qu'à la ligne suivante! donc forcément, tu appelles validate_email() sur une variable qui n'existe pas encore.
 
pour : checkdnsrr(), danhs le script envoyer_email.php, cette fonction est appelé, mais elle n'a pas l'air d'exister.

Reply

Marsh Posté le 29-08-2006 à 10:09:13    

pareil, pas besoin de mettre tes douze pages de code.
Commence par expliquer ton besoin, on essayera de te guider, pas de faire ton script à ta place.
Et si tu as vraiment besoin d'afficher du code, utilise les bonnes balises, ça  évitera d'avoir un gros pâté illisible ;)


---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Sujets relatifs:

Leave a Replay

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