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 lors de l'envoi des cookies [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut Erreur de header lors de l'envoi des cookies
    Bonjour à tous, je viens à vous avec une erreur connue de tous mais qui m'ennuie depuis une semaine. Le fameux warning "header has already sent ".
    Je l'ai déjà vu quelques fois et toujours réglé rapidement en retirant tout code html d'avant l'envoi de mes cookies. Mon soucis c'est que là, je ne génère aucun flux html avant l'appel de la fonction. Voyez plutôt :
    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
    <?php
    require("./constante.php");
    $link=mysql_connect(HOST,LOGIN,MDP);
    $database = mysql_select_db(DATABASE);
    function vue($currentPage)
    {
    	$saw = false;
    	if(!isset($_COOKIE['french-lab'][$currentPage]))
    	{
    		setCookie('french-lab['.$currentPage.']',$currentPage,time()+365*24*3600);
    		mysql_query("UPDATE contenu SET vue = contenu.vue +1 WHERE id = $currentPage ")or die(mysql_error());
    	}
    	else
    	{
    		foreach ($_COOKIE['french-lab'] as $tab)
    		{
    			if($tab == $currentPage)
    			{
    				$saw = true;
    			}
    		}
    		if($saw == false)
    		{
    			mysql_query("UPDATE contenu SET vue = contenu.vue +1 WHERE id = $currentPage ")or die(mysql_error());
    			setCookie('french-lab['.$currentPage.']',$currentPage,time()+365*24*3600);
    			mysql_query("UPDATE contenu SET vue = contenu.vue +1 WHERE id = $currentPage ")or die(mysql_error());	
    		}
    	}
    }
    if(!((isset($_GET['nom']))&&(isset($_GET['email']))&&(isset($_GET['commentaire'])))&&(isset($_GET['id'])))
    { 
    	$id = htmlspecialchars($_GET['id']);
    	vue($id);
    }
    ?><!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    /* etc ... */
    À savoir que constante.php ne contient que les définitions des 3 constantes de connexions à la base de données ( j'ai testé en les rentrant en dur et le même warning advient ).

    Si quelqu'un a une petite idée, je suis preneur. Je dois achever ce projet scolaire d'ici 2 semaines et je commence à m'affoler
    Pour ceux qui voudrait voir le site, il est en ligne sur www.french-lab.fr ( sans la partie cookies et session justement :S )

    P.S À la base la fonction vue est contenu dans constante.php, je vous l'ai mis avec pour une meilleure compréhension

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Montre l'erreur complete

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 89
    Points
    89
    Par défaut
    Il n'y a vraiment aucun caractère avant et après les balises php ? j'ai déjà eu le cas avec de simples retour à la ligne

    Normalement le message explicite le fichier et la ligne où l'envoi a débuté.

    Sinon il y a l'option output_buffering dans la configuration qui permet de bufferiser la sortie si mes souvenir sont bons.
    Au commencement Dieu a crée l'Homme, puis l'Homme a crée la machine, puis l'Homme a tué Dieu. Fou de rage, Dieu a envoyé à l'Homme l'Informatique pour le punir de son orgueil.


    Le libéralisme économique est une conjecture qui énonce que tout ensemble de classes tend à constituer un programme cohérent et stable.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    le message explicite indique la ligne 1.
    J'ai trouvé d'où venait le problème grâce à un ami. Je le met ici au cas où ça puisse servir à quelqu'un : Il faut encoder les fichier en utf-8 sans bom et non pas en utf-8 tout court ^^. Je ne savais pas que le BOM était un petit bout de texte qui ne s'affiche pas sur les logiciels style notepad++ etc ...

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

Discussions similaires

  1. [EJB3] Erreur de compilation lors de l'ajout des annotations
    Par rabebIF5 dans le forum Java EE
    Réponses: 4
    Dernier message: 05/04/2009, 19h40
  2. Erreur de variable lors de l'envoi du form
    Par Lenezir dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/02/2009, 15h54
  3. [MySQL] message d'erreur lors de l'envois des données du formulaires
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/12/2008, 17h14
  4. [VBA-E et Lotus]Erreur d'Automation lors de l'envoie du mail
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/08/2008, 13h05
  5. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18

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