1

Sujet : Warning: Cannot modify header [Résolu]

Vérification de l'existance du cookie,
s'il n'existe pas création création de celui-ci avec pour valeur une variable (nb visite de ce visteur soit 1)
s'il existe , incrémentation du nb de visite et modification du cookie avec cette nouvelle valeur....

C'est là que ça bug :
Ne créé pas le cookie et message d'erreur sur la page web en retour

-->"Warning: Cannot modify header information - headers already sent by (output started at /home/users/.....php:36) in /home etc.php  on line 56

if(!isset( $_COOKIE['edwin_acceuil_cross']))
     {
        $nb_visite_visiteur=1;
        setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600); // Ligne 56
       
    }
    else //si le cookie exite, on incrémente la valeur du cookie de 1 point
    {
    $nb_visite_visiteur= $_COOKIE['edwin_acceuil_cross'];
    $nb_visite_visiteur=$nb_visite_visiteur+1;
    setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600);
    }
etc...

Se trouve en entête, Aucun code html avant - avant la balyse DOCTYPE

Important : Marche trés bien en test sur wampserver mais pas quand je transfere sur "lescigales"


si quelqu'un peu m'aider .... Merci d'avance

2

Re: Warning: Cannot modify header [Résolu]

bonsoir,

peut-on avoir le code complet de la page, du moins tout ce qui se trouve avant la balise DOCTYPE

PENSEZ a masquer vos identifiants si besoin

3

Re: Warning: Cannot modify header [Résolu]

code complet jusque la page web :

<?php
     //ouverture de la base
     try
        {
           
            $bdd=new PDO('mysql:host=localhost; dbname=*****','*****','******');
        }
        catch(Exception $e)
        {
            die('erreur tu fais : ' .$e->getMessage());
        }
    $date_visite=date("d/m/y");
    $heure_visite=date('H,i');
    $IP_visite=$_SERVER['REMOTE_ADDR'];
       
    // vérification présence cookies ou creation   
        
     if(!isset( $_COOKIE['edwin_acceuil_cross']))
     {
        $nb_visite_visiteur=1;
        setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600);
       
    }
    else //si le cookie exite, on incrémente la valeur du cookie de 1 point
    {
    $nb_visite_visiteur= $_COOKIE['edwin_acceuil_cross'];
    $nb_visite_visiteur=$nb_visite_visiteur+1;
    setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600);
    }
    //on imprime les valeur dans la base
    $nb_visite_visiteur= $_COOKIE['edwin_acceuil_cross'];
    echo $nb_visite_visiteur; //////////////////////////////////
    if ($nb_visite_visiteur==1)
    {
        if(!file_exists("nvxVisiteur_acceuil_cross.txt")) // création du compteur , ici txt
        {
            $compteur_cookie=fopen("nvxVisiteur_acceuil_cross.txt","w");
            $hit=1; // Initialise a 1
            fseek($compteur_cookie,0);
            fputs($compteur_cookie,$hit);
            fclose($compteur_cookie);
        }
        else
        {
            $compteur_cookie=fopen("nvxVisiteur_acceuil_cross.txt","r+");
            $hit=fgets($compteur_cookie,255);
            $hit++;
            fseek($compteur_cookie,0);
            fputs($compteur_cookie,$hit);
            fclose($compteur_cookie);
        }
   
   
    $nouveau="nouveau";   
    }       
    else
    {
    $nouveau="habitue" . $nb_visite_visiteur;
    }
   
   

    $bdd->query("INSERT INTO base_compteur_visite VALUES('','$date_visite','$heure_visite','$IP_visite','$nb_visite_visiteur','$nouveau')");
   
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3......
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhrml">
<head>

etc....

</html>

4

Re: Warning: Cannot modify header [Résolu]

Bonsoir,

Tu as négligé le plus important: de savoir quand est ce que tu as envoyé des données au client web:

-->"Warning: Cannot modify header information - headers already sent by (output started at /home/users/.....php:36) in /home etc.php  on line 56

Tu trouveras l'information après 'output started at...'

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

5

Re: Warning: Cannot modify header [Résolu]

Bonjour
Désolé , mais je débute
Message complet :

Warning: Cannot modify header information - headers already sent by (output started at /home/users/00/1b/1a/home/www/index.php:36) in /home/users/00/1b/1a/home/www/index.php on line 56

6

Re: Warning: Cannot modify header [Résolu]

Il faut donc regarder ce qui se passe dans le fichier index.php à la ligne 36 smile

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

7

Re: Warning: Cannot modify header [Résolu]

<?php setcookie('edwin_byke_visiteur_8','visiteur_8', time() + 8*3600, null, null, false, true); // écriture cookie visite sur 8 heures?>// pas utilisé
<?php setcookie('edwin_byke_visiteur_6mois','visiteur_6mois', time() + 180*24*3600, null, null, false, true); // écriture cookie visiteur habitué sur 6mois?>//pas utilisé
<?php
     // Projet Personnel: compteur_cookie de visite utilisant un cookie.
   
     //Compte le nombre de personnes DIFFERENTES ayant accéder au site
     //(une partie du script est a reporter sur toutes les pages)
    
     // le 19/07/2010 essai modif avec intégration fidélité visiteur
   
     // Si pas de "compteur_cookie.txt"... le créer
     if(!file_exists("compteur_cookie.txt")) // création du compteur , ici txt
     {
     $compteur_cookie=fopen("compteur_cookie.txt","w");
     $hit=1; // Initialise a 1
     // Cree le COOKIE
     setcookie("Visite","ok",time()+365*24*3600); // 1 an
     }
     else{
     // Stocke les visites dans $hit
     $compteur_cookie=fopen("compteur_cookie.txt","r+");
     $hit=fgets($compteur_cookie,255);
     // Si pas de COOKIE...
     if(empty($_COOKIE["Visite"])){
     // Cree le COOKIE
     setcookie("Visite","ok",time()+365*24*3600); // 1 an
     // Incremente $hit
     $hit++;
     }
     }
     // Ecrit la valeur de $hit dans "compteur_cookie.txt"
     fseek($compteur_cookie,0);
     fputs($compteur_cookie,$hit);
     fclose($compteur_cookie);
     ?>
     <?php                                         // Ligne 36
     //ouverture de la base
     try
        {
           
            $bdd=new PDO('mysql:host=localhost; dbname=*****l','****','****');
        }
        catch(Exception $e)
        {
            die('erreur tu fais : ' .$e->getMessage());
        }
    $date_visite=date("d/m/y");
    $heure_visite=date('H,i');
    $IP_visite=$_SERVER['REMOTE_ADDR'];
       
    // vérification présence cookies ou creation   
        
     if(!isset( $_COOKIE['edwin_acceuil_cross']))
     {
        $nb_visite_visiteur=1;
        setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600); // 1 an  // modif cookie 1 en variable=1//sup""""
       
    }
    else //si le cookie exite, on incrémente la valeur du cookie de 1 point
    {
    $nb_visite_visiteur= $_COOKIE['edwin_acceuil_cross'];
    $nb_visite_visiteur=$nb_visite_visiteur+1;
    setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600);
    }
    //on imprime les valeur dans la base
    $nb_visite_visiteur= $_COOKIE['edwin_acceuil_cross'];
    echo $nb_visite_visiteur; //////////////////////////////////
    if ($nb_visite_visiteur==1)
    {
        if(!file_exists("nvxVisiteur_acceuil_cross.txt")) // création du compteur , ici txt
        {
            $compteur_cookie=fopen("nvxVisiteur_acceuil_cross.txt","w");
            $hit=1; // Initialise a 1
            fseek($compteur_cookie,0);
            fputs($compteur_cookie,$hit);
            fclose($compteur_cookie);
        }
        else
        {
            $compteur_cookie=fopen("nvxVisiteur_acceuil_cross.txt","r+");
            $hit=fgets($compteur_cookie,255);
            $hit++;
            fseek($compteur_cookie,0);
            fputs($compteur_cookie,$hit);
            fclose($compteur_cookie);
        }
   
   
    $nouveau="nouveau";   
    }       
    else
    {
    $nouveau="habitue" . $nb_visite_visiteur;
    }
   
   

    $bdd->query("INSERT INTO base_compteur_visite VALUES('','$date_visite','$heure_visite','$IP_visite','$nb_visite_visiteur','$nouveau')");
   
?>
   
   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhrml">
<head>

    ***** page web*********

8

Re: Warning: Cannot modify header [Résolu]

PS: J'ai essayé de supprimer le 1er script , mais toujours le même probleme  :


-->"Warning: Cannot modify header information - headers already sent by (output started at /home/users/00/1b/1a/home/www/index.php:2) in /home/users/00/1b/1a/home/www/index.php on line 22"

qui correspondent aux mêmes ligne

ligne 2 : <?php

...
ligne 22 :    setcookie('edwin_acceuil_cross',$nb_visite_visiteur,time()+365*24*3600);

9

Re: Warning: Cannot modify header [Résolu]

1/ Tu as surement un caractère entre ?> et <?php, utilise un bon éditeur pour tout voir
2/ Tu m'expliques quel est l'intérêt de fermer les balises php pour aussitôt les réouvrir ? smile

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

10

Re: Warning: Cannot modify header [Résolu]

bonjour,

étant débutant, j'ai réalisé le script en plusieurs étapes.ce qui explique les ouvertures et fermetures de balises.
Je vais bien sur intégrer l'un dans l'autre.

Pour ce mon probleme, en effet il existait un espace (tabulation) devant <?php.
Je pensai que comme pour les autres languages, cela n'avait pas d'importance .
Hé bien Non ...

Après suppressions , ça marche Nickel..

encore merci à toi , toad et aussi à Nico pour votre patience avec des nuls comme moi

Merci encore et bonne journée.

Re: Warning: Cannot modify header [Résolu]

je passe en résolu.

12

Re: Warning: Cannot modify header [Résolu]

Les cookies sont transmis via l'entête du message HTTP donc l'appel à setcookie intervient certainement après la définition du corps du message HTTP. Or, logiquement, une fois que tu commences à définir le corps du message tu ne peux plus revenir à l'entête.

>> SubTherMiX <<
>> alternux <<