Erreur d'un compteur très simple
Masterfree
Messages postés
195
Date d'inscription
Statut
Membre
Dernière intervention
-
Masterfree Messages postés 195 Date d'inscription Statut Membre Dernière intervention -
Masterfree Messages postés 195 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je voulais mettre un compteur de visites très simple sur mon site mais j'ai eu cette erreur :
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at H:\temp\Template_Html5 et Css\explications\explications.html:80) in H:\temp\Template_Html5 et Css\main_inc\compteur.php on line 2
Je comprends à peu près qu'il s'agit de session_start(), mais je ne sais pas pourquoi.
Source pris ici 'http://www.commentcamarche.net/forum/affich-24397331-faire-un-compteur-de-visite-visiteurs-en-php"
Voudriez-vous m'expliquer le pourquoi du comment ?
Merci d'avance de vos réponses.
Je voulais mettre un compteur de visites très simple sur mon site mais j'ai eu cette erreur :
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at H:\temp\Template_Html5 et Css\explications\explications.html:80) in H:\temp\Template_Html5 et Css\main_inc\compteur.php on line 2
Je comprends à peu près qu'il s'agit de session_start(), mais je ne sais pas pourquoi.
Source pris ici 'http://www.commentcamarche.net/forum/affich-24397331-faire-un-compteur-de-visite-visiteurs-en-php"
<?php session_start(); if(file_exists('compteur_visites.txt')) { $compteur_f = fopen('compteur_visites.txt', 'r+'); $compte = fgets($compteur_f); } else { $compteur_f = fopen('compteur_visites.txt', 'a+'); $compte = 0; } if(!isset($_SESSION['compteur_de_visite'])) { $_SESSION['compteur_de_visite'] = 'visite'; $compte++; fseek($compteur_f, 0); fputs($compteur_f, $compte); } fclose($compteur_f); echo '<strong>'.$compte.'</strong> visites.'; ?>
Voudriez-vous m'expliquer le pourquoi du comment ?
Merci d'avance de vos réponses.
A voir également:
- Erreur d'un compteur très simple
- Compteur électrique - Guide
- Iphone 14 simple - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Compteur contractions - Télécharger - Santé & Bien-être
- Montage video simple windows - Guide
4 réponses
Bonjour
A priori, ce n'est pas le code source qui est mauvais, mais l'utilisation que tu en fais.
Le fichier compteur.php est inclus alors que des données ont déjà été envoyées à l'utilisateur par le fichier explications.html.
Ça ne peut pas marcher parce que l'ouverture de session utilise les en-têtes du protocole HTTP, et que quand tu envoies de données, il n'est plus possible de revenir aux en-têtes.
La solution est de déplacer l'instruction session_start() pour la mettre avant l'envoi des données.
Il faudrait voir le code de la page qui appelle compteur.php pour te dire exactement où si tu ne le vois pas toi-même.
A priori, ce n'est pas le code source qui est mauvais, mais l'utilisation que tu en fais.
Le fichier compteur.php est inclus alors que des données ont déjà été envoyées à l'utilisateur par le fichier explications.html.
Ça ne peut pas marcher parce que l'ouverture de session utilise les en-têtes du protocole HTTP, et que quand tu envoies de données, il n'est plus possible de revenir aux en-têtes.
La solution est de déplacer l'instruction session_start() pour la mettre avant l'envoi des données.
Il faudrait voir le code de la page qui appelle compteur.php pour te dire exactement où si tu ne le vois pas toi-même.
Merci de ta réponse, même si c'est explicatif... pour toi !
Comme tu me l'as demandé, voici comment est appelé le fichier.
Comme tu me l'as demandé, voici comment est appelé le fichier.
[...] <a href="contact/contact.php">Contact</a> | </div> <div id="compteur"> <?php include ('main_inc/compteur.php'); ?> </div> <div id="copyright"> <script src="js/copyright.js" type="text/javascript"></script> </div> [...]
Il faut que tu enlèves la ligne session_start(); du début de compteur.php.
Il faut la remettre au tout début de ta page qui contient le include :
Il n'est pas impossible que d'autres erreurs apparaissent si tu as copié-collé d'autres morceaux aveuglément comme celui-ci.
Il faut la remettre au tout début de ta page qui contient le include :
<?php session_start(); ?>
Il n'est pas impossible que d'autres erreurs apparaissent si tu as copié-collé d'autres morceaux aveuglément comme celui-ci.
J'ai bien compris ce que tu veux dire et je l'ai fait.
Bon, apparemment, ça marche... mais à chaque fois que j'actualise la page, le compteur est incrémenté !
Ca ne m'arrange pas trop, aussi, je vais essayer de mettre un autre compte ... qui ne compte pas les actualisations.
En tout cas, merci de ton aide.
Bonne journée.
Cordialement.
Sabrimi
Bon, apparemment, ça marche... mais à chaque fois que j'actualise la page, le compteur est incrémenté !
Ca ne m'arrange pas trop, aussi, je vais essayer de mettre un autre compte ... qui ne compte pas les actualisations.
En tout cas, merci de ton aide.
Bonne journée.
Cordialement.
Sabrimi