Compteur de visites en php : cookie = galère
Résolu/Fermé
A voir également:
- Compteur de visite php avec session
- Qui visite mon profil facebook - Guide
- Qui visite mon profil instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Compteur de contractions - Télécharger - Santé & Bien-être
- Retour a la ligne php ✓ - Forum PHP
3 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
31 juil. 2011 à 22:22
31 juil. 2011 à 22:22
Salut,
un peu de théorie. Les cookies sont une fonctionnalité du protocole HTTP. Les requêtes et les réponses transmises via ce protocole se composent de deux parties : les en-têtes (headers) et le corps. Si tu connais déjà la fonction header de PHP, tu sais que les en-têtes doivent être envoyés avant le corps. Eh bien, les cookies font partie des en-têtes.
Sinon, le problème dans ton code se situe à mon avis ici :
Il faut utiliser la « superglobale » $_COOKIE. C'est une variable que PHP construit automatiquement à partir des cookies qu'il trouve dans les en-têtes de la requête. La variable $cool_cookie n'est simplement pas définie, c'est pour ça que ton script passe dans le else à chaque fois... Avec ceci, ça ira sûrement mieux :
Si tu ne peux vraiment pas arranger ton code pour pouvoir utiliser setcookie avant le contenu de ta page, je te conseille d'envisager la solution JavaScript. Les cookies créés en JS ne sont pas différents de ceux créés par le serveur. Cependant, cette solution ne marchera pas pour les clients qui n'ont pas JavaScript, c'est-à-dire les robots des moteurs de recherche, les navigateurs pour les malvoyants, et également les paranos comme moi qui ont installé NoScript (et tu serais surpris de voir combien nous sommes :P).
À toi de peser le pour et le contre : solution PHP vs solution JS...
un peu de théorie. Les cookies sont une fonctionnalité du protocole HTTP. Les requêtes et les réponses transmises via ce protocole se composent de deux parties : les en-têtes (headers) et le corps. Si tu connais déjà la fonction header de PHP, tu sais que les en-têtes doivent être envoyés avant le corps. Eh bien, les cookies font partie des en-têtes.
Sinon, le problème dans ton code se situe à mon avis ici :
if (isset($cool_cookie) && $cool_cookie =="Deja_visite")
Il faut utiliser la « superglobale » $_COOKIE. C'est une variable que PHP construit automatiquement à partir des cookies qu'il trouve dans les en-têtes de la requête. La variable $cool_cookie n'est simplement pas définie, c'est pour ça que ton script passe dans le else à chaque fois... Avec ceci, ça ira sûrement mieux :
if (isset($_COOKIE['cool_cookie']) && $_COOKIE['cool_cookie'] =="Deja_visite")
Si tu ne peux vraiment pas arranger ton code pour pouvoir utiliser setcookie avant le contenu de ta page, je te conseille d'envisager la solution JavaScript. Les cookies créés en JS ne sont pas différents de ceux créés par le serveur. Cependant, cette solution ne marchera pas pour les clients qui n'ont pas JavaScript, c'est-à-dire les robots des moteurs de recherche, les navigateurs pour les malvoyants, et également les paranos comme moi qui ont installé NoScript (et tu serais surpris de voir combien nous sommes :P).
À toi de peser le pour et le contre : solution PHP vs solution JS...
Bonsoir, et merci beaucoup (on ne le dit que trop peu souvent).
La réponse à mon problème était bien là : la définition de ma variable $cool_cookie. J'avais pompé cette partie là d'un script "tout fait", n'ayant jamais touché aux cookies avant ca, mais maintenant j'y vois un peu plus clair, et on ne m'y reprendra plus.
Merci aussi pour m'avoir bien enfoncé dans le crane le principe des headers.
Bref, maintenant tout fonctionne à merveille :) !
En ce qui concerne le JS , ma solution est toute trouvée : je m'intéresse pour l'instant seulement au php. Donc c'est le script en php que je conserve.
Je vous souhaite une bonne soirée.
La réponse à mon problème était bien là : la définition de ma variable $cool_cookie. J'avais pompé cette partie là d'un script "tout fait", n'ayant jamais touché aux cookies avant ca, mais maintenant j'y vois un peu plus clair, et on ne m'y reprendra plus.
Merci aussi pour m'avoir bien enfoncé dans le crane le principe des headers.
Bref, maintenant tout fonctionne à merveille :) !
En ce qui concerne le JS , ma solution est toute trouvée : je m'intéresse pour l'instant seulement au php. Donc c'est le script en php que je conserve.
Je vous souhaite une bonne soirée.
bonjour,
voici une solution facile
Crée un fichier à extension TXT et appelle le compteur.txt
Dans le fichier compteur.txt, tu ecrirs 1 ou 0
ajoute une iFrame sur la page principale. Voici le code pour ajouter une iframe
<address><iframe style="border: 1px; float:right; background-color: rgb(510, 204, 200);" border="0" name="video" marginwidth="0" marginheight="0" src="visitor.php" align="justify" border-color="#0099cc" frameborder="0" framebordercolor="#0099cc" height="18" scrolling="no" width="163"></iframe></address>
tu crée une page php avec ce code
<?php
$contenu = file_get_contents('compteur.txt');
$fp = fopen('compteur.txt', 'w');
fwrite($fp, $contenu + 1);
fclose($fp);
include('compteur.txt');
?>
et tu appelle cette page visitor.php
tu mets la page
visitor.php et le fichier compteur;txt dans le même dossier ou se trouve la page principage. Mais dans la page principale, il ne faut oublier d'ajouter le code pour créer une IFRAME au milieu de la page.
chaque fois que tu ouvre la page principale, le compteur avance de 1.
bonne continuation
voici mon mail pour question ***@***
voici une solution facile
Crée un fichier à extension TXT et appelle le compteur.txt
Dans le fichier compteur.txt, tu ecrirs 1 ou 0
ajoute une iFrame sur la page principale. Voici le code pour ajouter une iframe
<address><iframe style="border: 1px; float:right; background-color: rgb(510, 204, 200);" border="0" name="video" marginwidth="0" marginheight="0" src="visitor.php" align="justify" border-color="#0099cc" frameborder="0" framebordercolor="#0099cc" height="18" scrolling="no" width="163"></iframe></address>
tu crée une page php avec ce code
<?php
$contenu = file_get_contents('compteur.txt');
$fp = fopen('compteur.txt', 'w');
fwrite($fp, $contenu + 1);
fclose($fp);
include('compteur.txt');
?>
et tu appelle cette page visitor.php
tu mets la page
visitor.php et le fichier compteur;txt dans le même dossier ou se trouve la page principage. Mais dans la page principale, il ne faut oublier d'ajouter le code pour créer une IFRAME au milieu de la page.
chaque fois que tu ouvre la page principale, le compteur avance de 1.
bonne continuation
voici mon mail pour question ***@***