IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur de header sur un serveur et pas sur un autre.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    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 ... :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Supprime l'espace (ou la ligne sauté) juste avant le <?php
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    non non y a pas d'espaces ...
    t'inquiète j'ai déjà vérifié !

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    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

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    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:

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 6
    Points
    6
    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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut ob_start();
    sinon pour mon erreur j'ai trouvé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2009, 11h38
  2. requete marche sur le serveur marche pas sur le site
    Par ben_skywalker dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/12/2008, 12h07
  3. Mon Alias marche sur le Serveur mais pas sur le Client
    Par Aquellito dans le forum Windows Serveur
    Réponses: 12
    Dernier message: 26/11/2008, 09h49
  4. Réponses: 4
    Dernier message: 08/11/2007, 17h31
  5. Réponses: 5
    Dernier message: 23/06/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo