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 07/05/2007, 08h50   #1
Membre du Club
 
Inscription : novembre 2004
Messages : 151
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2004
Messages : 151
Points : 69
Points : 69
Par défaut Erreur de header sur un serveur et pas sur un autre.

Bonjour tout le monde !
Je développe actuellement un site de gestion pour une entreprise en php.
J'ai une page avec un formulaire qui se recharge en fonction des erreurs grâce à la fonction localtion("header"), tout marchait très bien sur mon serveur de Dev puis lorsque l'on est passé en prod j'ai eu la célèbre erreur qui fait tirer les cheveux ... :
Citation:
Warning: Cannot modify header information - headers already sent by (output started at C:\Arbo-Web\voyance\private\conf\private.header.inc.php:11) in C:\Arbo-Web\voyance\class\voyant.class.php on line 152
voici ma page header :
Code HTML :
1
2
3
4
5
6
7
8
9
10
11
12
 
<html>
	<head>
	<link href="../style_private.css" rel="stylesheet" type="text/css" />
	</head>
	<body>
	<div id="dessus">
		<a href="../../deconnect.php"><img src="../../gfx/quitter.gif" border="0"/><br/>
		Quitter</a>
	</div>
  		<div id="page">
	       <div id="header">

La classe voyant :
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
 
public function ajouterVoyant($nomV, $login, $pinCode, $tel,$level,$offset){
            if(!$this->isNotExistLogin($login)) $erreur ='login';
            if(!$this->isNotExistName($nomV)) $erreur .='+name';
            if(!checkCode($pinCode,4)) $erreur .='+pin';
            if(!checkCode($tel,10,1))$erreur .='+tel';
            do {
                $ConfNum = mt_rand($offset,$offset+100);
                sprintf("%0.6d",$ConfNum);
                $sql1 = "SELECT Idx FROM monitors WHERE ConfNum = $ConfNum";
                try {
				    $sth = $this->dbh->query($sql1);
				    $result = $sth->fetchAll();
                }
                catch (PDOException $e){
                    if(DEBUG_MODE)
				        echo 'Erreur : '.$e->getMessage().'<br/>';
			    }   
            } 
			while(count($result)!=0);
            if(@ $erreur == ""){ //Empeche l'affichage de la notice pour variable inexistante
                $nomV = $this->dbh->quote($nomV);
                $login = $this->dbh->quote($login);
                $confGroup = $this->dbh->quote($_SESSION['confGroup']);
                $tel = $this->dbh->quote($tel);
        		$sql = "INSERT into monitors (Name, Login, PinCode, Phone,ConfNum,ConfGroup, Level, StatLevel, Active) 
        					VALUES ($nomV,$login,$pinCode,$tel,$ConfNum,$confGroup,$level, 1, 1)";
        		try {
            		$retour = $this->dbh->exec($sql);
            		if(DEBUG_MODE)
            			 retourReq($retour);
            		return true;
        		}
        		catch (PDOException $e){
        			if(DEBUG_MODE)
        				echo 'Erreur : '.$e->getMessage().'<br/>';
        			return false;
        		}  
             }
             else {
                header("location:add_voyant.php?erreur=".$erreur."&nom=".$nomV."&login=".$login."&pin=".$pinCode."&tel=".$tel."");
                return false;
             }
        }
Et la page ou il y a le formulaire :
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
<?php 
    session_start();
    $page = 'add_voyant';
    if(isset($_SESSION['idx']) && isset($_SESSION['name'])){ 
        include ('../conf/private.header.inc.php');
        include ('../../fonctions.php');
        include ('../../conf/conf.inc.php');
        if(checkPageRight($page,$dbh)){
        ?>
         <div id="conteneurmenu">
    	    	<ul id=menu>    	  
    	    	  <li><a href="modif_voyant.php"><img src="../../gfx/modif_voyant.gif" border="0" /></a></li>
    	    	  <li><a href="suppr_voyant.php"><img src="../../gfx/suppr_voyant.gif" border="0" /></a></li>
    	    	  <li><a href="add_voyant.php"><img src="../../gfx/add_voyant.gif" border="0" /></a></li>
    	    	</ul>
    	       </div>	
    	   </div> 
    	       <div id="central">
    	       <h2>Ajouter un(e) voyant(e) : </h2>
    	       <?php if (!isset($_POST['ajouter'])){ ?>
				    <form action="#" method="POST">
                    	<table>
                    	<tr>
                    		<td>* Nom : </td>
                    		<td><input name="nom" type="text" value="<?php if(isset($_GET['nom'])) echo $_GET['nom']; ?>"/>
                    		  <?php if(isset($_GET['erreur']) && (stripos($_GET['erreur'],"name")!== false)) echo '<span class="erreur">Ce nom existe déjà</span>';?>
                    		</td>
                    	</tr>
                    	<tr>
                    		<td>* Login : </td>
                    		<td>
                    		  <input name="login" type="text" value="<?php if(isset($_GET['login'])) echo $_GET['login']; ?>" maxlength="12"/>
                    		      <?php if(isset($_GET['erreur']) && (stripos($_GET['erreur'],"login")!== false)) 
                    		              echo '<span class="erreur">Ce login existe déjà</span>';
                    		            else echo '(Choisir un login entre 4 et 12 caractères)'?>
                    		</td>
                    	</tr>
                    	<tr>
                    		<td>* Code Pin : </td>
                    		<td>
                    		  <input name="pin" type="text" value="<?php if(isset($_GET['pin'])) echo $_GET['pin']; ?>" maxlength="4"/> 
                    		  <?php if(isset($_GET['erreur']) && (stripos($_GET['erreur'],"pin")!== false)) 
                    		              echo '<span class="erreur">Ce code ne fait pas 4 chiffres</span>';
                    		            else echo '(Choisir un code pin de 4 chiffres)'?>
                    		</td>
                    	</tr>
                    	<tr>
                    		<td>* Téléphone : </td>
                    		<td><input name="tel" type="text" value="<?php if(isset($_GET['tel'])) echo $_GET['tel']; ?>" maxlength="10"/>
                    		  <?php if(isset($_GET['erreur']) && (stripos($_GET['erreur'],"tel")!== false)) echo '<span class="erreur">Ce téléphone ne fait pas 10 chiffres</span>';?>
                    		</td>
                    	</tr>
                    	   <td>Niveau de droits : </td>
                    	   <td><?php 
                    	           echo '<select name="level">';
                                   for($i=1;$i<=MAX_LEVEL;$i++) 
                    	               echo '<option value="'.$i.'">'.$i.'</option>';?>
                                   </select>
                           </td>
                    	<tr>
                    	</tr>
                    		<td colspan="2"><input class="ok" name="ajouter" type="submit" value=""/></td>
                    	</tr>
                    	</table>
						</span>
                    </form>
                <?php 
    	       }
                else {
                    if(!empty($_POST['nom']) && !empty($_POST['login']) && !empty($_POST['pin']) && !empty($_POST['tel'])){
                          $voyant = new Voyant($dbh);
                          $offset = $tab[$_SESSION['confGroup']]; 
                          if($voyant->ajouterVoyant($_POST['nom'], $_POST['login'],$_POST['pin'],$_POST['tel'],$_POST['level'],$offset))
                              echo 'Voyant ajouté à la base de donnée<br/>';
                          else echo 'Erreur dans lajout';
                    }
                    else {
                        echo 'Merci de remplir correctement les champs avec des astérisques.<br/>';
                    }
                }
        include ('../conf/private.footer.inc.php');
        }
        else header("../index.php");
    }
    else header("location:../index.php");
?>
En espérant quer vous pourrez m'aider je vous remercie d'avance
AsQuel
AsQuel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2007, 11h00   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Supprime l'espace (ou la ligne sauté) juste avant le <?php
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2007, 13h04   #3
Membre du Club
 
Inscription : novembre 2004
Messages : 151
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2004
Messages : 151
Points : 69
Points : 69
non non y a pas d'espaces ...
t'inquiète j'ai déjà vérifié !
AsQuel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2007, 17h16   #4
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Salut,

Cette erreur provient généralement d'un session_start(), à savoir que tu affiches quelques part qqchose sur le navigateur avant d'ouvrir ta session, il faut que l'ouverture de session se fasse avant tout affichage !

Ton erreur ne peut venir que de là, alors vérifie méthodiquement ton code, ça peut venir de 3 fois rien ( un echo ou include qui en fait un... )

++
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2007, 23h42   #5
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
je ne sais pas si c'est la raison du message d'erreur, mais il y a dans ton code un header vers la page index.php sans le texte location:
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 14h24   #6
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 4
Points : 4
Par défaut output_buffering

j'ai le meme type d'erreur (et j'ai bien fait attention au espace blanc et echo dans include en cascade)

mais toi apperement tu ne l'as pas tout le temps, une info que j'ai trouvée c'est d'avoir cette ligne dans php.in :
; - output_buffering = 4096 [Performance]

PE que ton serveur de dev l'a et pas l'autre

moi je l'avais deja donc mon problème vient pas de la
Mikxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 14h38   #7
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 4
Points : 4
Par défaut ob_start();

sinon pour mon erreur j'ai trouvé ca :
Code :
1
2
3
4
ob_start();
require_once('ManageUser.php');
header('Location: ../ToDoList.php);
ob_end_flush();
et ca marche
dans le message
[Résolu] header() qui ne fonctionne pas
de ce forum (qui indique notament la modif php.ini dont je te parlais...)
bonne continuation
Mikxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2007, 09h27   #8
Membre du Club
 
Inscription : novembre 2004
Messages : 151
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2004
Messages : 151
Points : 69
Points : 69
non non j'ai déjà utilisé les tampons php
j'ai déjà vérifié les session_start
les echos et tout le reste
par contre pour le output buffering dans php.ini je connaissais pas
je vais regarder
AsQuel 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 10h45.


 
 
 
 
Partenaires

Hébergement Web