Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: leaweb le le 19-11-2011 a 20:37:16

Titre: probleme formulaire de contact
Posté par: leaweb le le 19-11-2011 a 20:37:16

Bonjour,

J'ai un formulaire de contact...
Je recois bien les messages envoyé depuis, mais lorsque le message est envoyé, il y a un message qui s'affiche au dessus du formulaire :::
Warning: Cannot modify header information - headers already sent by (output started at /var/www/xxxx.fr/htdocs/haut.php:111) in /var/www/xxxx.fr/htdocs/controles.php on line 40

et la ligne 40 s'est :
header("Location: contact.php?message=envoye");



                        </html>
                        ';
                     mail($mailAdministrateur, stripslashes($header), $messageMail, $from);
                     header("Location: contact.php?message=envoye");
                  } else {
                     $log = '<ul><li>Message non renseigné</li></ul>';
                  }
               } else {
                  $log = '<ul><li>Sujet non renseigné</li></ul>';

Avez vous une idée ?
MERCI

Titre: Re:probleme formulaire de contact
Posté par: WebD le le 20-11-2011 a 08:13:59

Salut Leaweb,
Cette erreur provient du fait que tu appels la fonction header() après les balises html, et surtout après <head></head>

Il faut faire ceci:

Code:

<?php
Ton code d'envoi de mail avec header(Location:...)
?>
Puis le code html:
<html>
<head>
...
</head>

<body>
...
</body>
</html>

Titre: Re:probleme formulaire de contact
Posté par: leaweb le le 20-11-2011 a 08:45:57

Comprend pas !!!


Code:
<?php
   $mailAdministrateur = "xxxxxxxx";
   $nomDuSite = "xxxxx";
   $adrDuSite = "xxxxxxx";
   
   
   $log="";$nom="";$prenom="";$mail="";$message="";$sujet="";
   if(isset($_GET['message']) && $_GET['message'] == 'envoye') {
      $log = '<ul><li>Message envoyé</li></ul>';
   }
   
   if(isset($_POST['contact'])) {
      $nom = $_POST['nom']; $prenom = $_POST['prenom']; $mail = $_POST['mail']; $message = $_POST['message']; $sujet = $_POST['sujet'];
      if($nom!='') {
         if($prenom!='') {
            if(preg_match("#^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$#", $mail)) {
               if($sujet!='') {
                  if($message!='') {
                     $from = "From:contact@".$adrDuSite."\nMime-Version:\n";
                     $from .= " 1.0\nContent-Type: text/html; charset=UTF-8\n";
                     $header= $nomDuSite." - Contact";
                     
                     $messageMail = '
                        <html>
                           <head>
                           </head>
                           <body>
                              <h1>'.$nomDuSite.' - MESSAGE du site www.titoo.fr</h1>   <p>****************************************************************</p>
                              <ul>
                                 <li>Nom : '.$nom.'</li>
                                 <li>Prenom : '.$prenom.'</li>
                                 <li>Mail : '.$mail.'</li>
                              </ul>   <p>****************************************************************</p>
                              <p>Sujet : '.$sujet.'</p>   <p>****************************************************************</p>
                              <p>'.$message.'</p>   <p>****************************************************************</p>
                           </body>
                        </html>
                        ';
                     mail($mailAdministrateur, stripslashes($header), $messageMail, $from);
                     header("Location: contact.php?message=envoye");
                  } else {
                     $log = '<ul><li>Message non renseigné</li></ul>';
                  }
               } else {
                  $log = '<ul><li>Sujet non renseigné</li></ul>';
               }
            } else {
               $log = '<ul><li>Mail au format incorrect</li></ul>';
            }
         } else {
            $log = '<ul><li>Prénom incorrect</li></ul>';
         }
      } else {
         $log = '<ul><li>Nom incorrect</li></ul>';
      }
   }
?>

Titre: Re:probleme formulaire de contact
Posté par: WebD le le 20-11-2011 a 08:51:50

Autant pour moi, je pensais que le </html> que l'on voyait dans ton premier message était celui de la ta page web.

Le code que tu viens de mettre doit être exécuté AVANT avoir envoyé les balises html de ta page qui affiche le formulaire.

Titre: Re:probleme formulaire de contact
Posté par: leaweb le le 20-11-2011 a 11:33:57

Ok c'est fait, cela fonctionne, mais comment faire pour que dés que le formulaire est envoyé, l'internaute soit redirigé sur la page index.php car la, l'internaute reste sur le formulaire et s'il reclique sur envoyer, je recois plusieur fois le message...

Dans l'attente,

Titre: Re:probleme formulaire de contact
Posté par: WebD le le 20-11-2011 a 12:17:11

Tu remplaces

Code:
header("Location: contact.php?message=envoye");

par

Code:
header("Location: index.php");

Titre: Re:probleme formulaire de contact
Posté par: leaweb le le 20-11-2011 a 12:30:31

Citation de: WebD le le 20-11-2011 a 12:17:11
Tu remplaces

Code:
header("Location: contact.php?message=envoye");

par

Code:
header("Location: index.php");



Non, si je fais cela, après envoi, je resye sur le formulaire et il reste rempli. et si je reclique sur envoyer, cela repart !!!!

Titre: Re:probleme formulaire de contact
Posté par: leaweb le le 21-11-2011 a 18:56:45

Personne ne peut m'aider ????

Titre: Re:probleme formulaire de contact
Posté par: webyser le le 20-12-2011 a 02:11:11


Bonjour,


si tu n'arrive à rien avec la fonction header essaye :

echo '<meta http-equiv="Refresh" content="0; URL=index.php">';

Titre: Re:probleme formulaire de contact
Posté par: Erwan29 le le 12-01-2012 a 00:25:48

Salut !

Je viens de m'inscrire, rien que pour toi :)
Avant de défaire complètement ton code pour dénicher le problème, sache que l'UTF-8 ajoute des octets invisibles avant la balise <?php

Ces caractères invisibles sont interprétés comme des données à envoyer au nivagateur et cela déclenche le Warning" header already sent, etc."

Donc si je peux te le conseiller, si ton code est en UTF-8 simple, convertis le en UTF-8 sans BOM.

Je vais tester ton code pour voir.


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.