Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2011, 13h54   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 2
Points : 2
Par défaut header( Location: Warning: Cannot modify header information

Bonjour

j'utilise un script pour vérifier mon formulaire mais impossible de faire une redirection vers une page de remerciement avec header(Location:

voici le script que j'utilise :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
 
$webmaster = "mail@site.com";
 
if(isset($_POST['envoyer'])){     
    $alerte = $_POST['envoyer']; 
    $nom = htmlentities($_POST['nom'], ENT_NOQUOTES);  
    $mail = htmlspecialchars($_POST['mail'], ENT_QUOTES);  
    $tel = htmlspecialchars($_POST['tel'], ENT_QUOTES); 
    $sujet = htmlspecialchars($_POST['sujet'], ENT_QUOTES); 
    $message = htmlspecialchars($_POST['ville'], ENT_QUOTES); 	
}
 
 
function verif_null($var){
    if($var!=""){
     return $var;
   }
}
 
function verif_mail($var) 
{
   $code_syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#'; 
      if(preg_match($code_syntaxe,$var)){ 
        return $var;
      }   
}
 
function verif_tel($var)  
{
   $code_syntaxe='#^[0-9]{9,18}$#'; 
      if(preg_match($code_syntaxe,$var)){
        return $var;
      }
}
function envoi_mail($webmaster,$nom,$mail,$sujet,$tel,$message){ //fonction qui envoie le mail
       $contenu_message = "Nom : ".$nom."\nMail : ".$mail."\nSujet : ".$sujet."\nTelephone : ".$tel."\nMessage : ".$message;
	   $entete = "From: ".$nom." <".$mail."> \nContent-Type: text/html; charset=iso-8859-1";
 
       mail($webmaster,$sujet,$contenu_message,$entete);
 
 
}
 
 
function verif_form($webmaster,$nom,$mail,$sujet,$tel,$message){         if(verif_null($nom)
		&& verif_null($sujet)
		&& verif_null($message)
		&& verif_tel($tel)
		&& verif_mail($mail)
		) 
		{ 
		   envoi_mail($webmaster,$nom,$mail,$sujet,$tel,$message);
		   $action = "go";
		   echo "<font color=\"red\"  size=\"3\" face=\"Verdana, Arial, Helvetica, sans-serif\" ><strong>Tout les champs sont valider le mail est envoyé. Merci</strong></font><br>"; // Le mail est envoyé
		   echo "<font color=\"red\"  size=\"3\" face=\"Verdana, Arial, Helvetica, sans-serif\" ><strong>".$action."</strong></font><br>";
		   if($action == "go") { header('Location: http://www.monsite.com/'); }
		}else{
		   echo "<font color=\"red\" size=\"3\" face=\"Verdana, Arial, Helvetica, sans-serif\" ><strong>Veuillez saisir correctement tous les champs en rouge.</strong></font><br>"; // Une erreur dans le formulaire
		}
}
 
?>
 
<br />
<?php 
if(isset($alerte)){ 
   verif_form($webmaster,$nom,$mail,$sujet,$tel,$message); 
}
?>

le script marche mais je n'arrive pas a savoir ou rajouter la redirection

j'ai mis le code
Code :
		   if($action == "go") { header('Location: http://www.monsite.com/'); }
après la vérification d'envoi du mail.

mais cela m'indique l'erreur suivante :

Citation:
Warning: Cannot modify header information - headers already sent by (output started at /menu.php:108) in /formulaire.php on line 120
la ligne 120 étant la ligne avec header'Location


et mon menu.php comprend comme code
Code :
1
2
3
4
5
6
7
8
$url = $_SERVER["PHP_SELF"]; 
$path = explode('/', $url); 
...
...
if($path[2] == 'contact') {
	$menu .= 'class="active"';
}
	$menu .= '><a href="/fr/contact">
pour mettre une classe="active" dans mon menu.

PS : je viens de virer mo menu et cette fosi ile me met le meme message avec navigation.php (sibear de gauche) qui elle en contient pas de script juste des includes du style

Code :
<?php include ($_SERVER['DOCUMENT_ROOT'].'/navigation.php');/?>
qui est d'ailleur sur la même sturcture que moin en-tete avec les même type d'include qui se trouve avant mon menu et qui ne met pas le message ???


1°) le header(Location: est-il bien placé ???

2°) que veut dire le message d'erreur
Citation:
Warning: Cannot modify header information - headers already sent by (output started at /menu.php:108) in /formulaire.php on line 120
???

Merci a tous
megaup34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 14h32   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
il ne faut pas placer du texte avant le header, qu'as tu lignes 108 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 14h43   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 2
Points : 2
merci cela fonctionne

1°) ligne 108 j'ai une simple include
Code :
<?php include ($_SERVER['DOCUMENT_ROOT'].'/structure/structure_module_fin.php');?>
y a t - il un probleme particulier (ligne 108 c'est la ligne 108 du fichier menu.php(bout de code a inclure) ou c'est la ligne 108 de la page code source)


2°) mais comme j'ai une include de toutes mes pages vers le fichier entete.php qui contient :
Code :
1
2
3
4
5
<!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>
si header('Location: doit se trouver avant le code html


cela veut dire que je vais devoir charger la vérification de mon formulaire sur toutes mes pages ????

toutes mes pages qui n'ont pas de formulaire vont aussi verifier et charger des variables alors qu'elles n'ont pas de formulaire a vérifier ???

je vais me retrouver avec tout cela a charger des variables qui servent a rien pour chaque page (le serveur va faire la geule ???) lol

tout cela pour rien lol, il doit bien y avoir une solution pour alleger cela lol
megaup34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 14h48   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
si tu fais un header pour une redirection, t'as pas besoin d'inclure ton entete.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h28   #5
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 43
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 43
Points : 27
Points : 27
Des caractères indésirables peuvent précéder <?php sans que cela se voit. Tout dépend de l'encodage du fichier qui retourne cette erreur.

En UTF-8 trois caractères invisibles précèdent la chaîne <?php :
239 - 187 et 191

En UTF-16BE 2 caractères :
254 et 255

En UTF-16LE 2 caractères :
255 et 254

Seuls les encodages UTF-8 (sans BOM) et Ansi n'envoient rien au navigateur.
Donc quand on a l'impression d'avoir un code irréprochable, il faut commencer par vérifier sous Notepad++ le type d'encodage du fichier récalcitrant.
Dormeur74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web