Compteur de visite avec cookie // robots

Nouveau WRInaute
Bonjour à toutes et à tous,

j'ai un mini compteur de visite php avec l'utilisation des cookies.
J'aimerais garder son ultra simplicité tout en évitant de comptabiliser les robots...
J'ai pensé à ne pas incrémenter le nombre de visites si le cookie n'a pas était accepté (dans l'idée qu'un robot n'accepte pas les cookies et au détriment des réels clients n'acceptant volontairement pas les cookies...)

Qu'en pensez-vous ? L'idée est bonne ou y une autre astuce ?
Merci d'avance

:wink:
 
WRInaute accro
L'idée est bonne.

Rares sont les robots qui acceptent les cookies et rares sont les humains qui les refusent. :wink:

Jean-Luc
 
WRInaute discret
http://fr.php.net/setcookie a dit:
setcookie() définit un cookie qui sera envoyé avec le reste des en-têtes. Comme pour les autres en-têtes, les cookies doivent être envoyés avant tout autre sortie (c'est une restriction du protocole HTTP, pas de PHP). Cela vous impose d'appeler cette fonction avant toute balise <html> ou <head>. Si quelque chose a été envoyé avant l'appel à cette fonction, setcookie() échouera et retournera FALSE. Si setcookie() réussi, elle retournera TRUE. Cela n'indique pas si le client accepte ou pas le cookie.
 
Nouveau WRInaute
:oops: je viens de comprendre...

on ne peut pas tester immédiatement après le setcookie() si le client a accepté ou non le cookie car le cookie accepté n'est accessible qu'à la page suivante ou après rechargement de la page...

C'est ça ?

Disons que généralement, un client va au moins sur 2 pages... :roll:

Mais bon, c'est pas top top.
Une autre idée ?
 
WRInaute accro
Tchup a dit:
jeanluc a dit:
L'idée est bonne.
Merci :)

Dan_A a dit:
Comment sait-on lors de la première visite si les cookies sont acceptés ?
:?: setCookie() renvoie un booleen...
> c'est la réponse à la question ?

Cela ne veut pas dire que le client accepte ou pas le cookie, le booleen est la pour dire si la fonction a buger ou pas a l'emploie. Si il y a du html avant en sortie, ca renvoie 0.

Pour Tchup:

il faut que tu recharges la page pour verifier si le cookie a bien été envoyer. C'est transparant avec des headers

prend -www.phpsources.org
quand tu arrives pour la premiere fois sur ce site (quel que soit la page), tu passes pas un fichier de log qui redirige avec des headers. Dit moi si tu le vois ?
 
Nouveau WRInaute
Salut Dan_A et KOogar,

KOogar > j'ai donc cherché dans cette direction, mais je n'arrive pas faire en sorte que la redirection ne se fasse qu'une seule fois ! Parce que si la redirection (réactualisation de la page) s'exécute si le cookie n'est pas trouvé, alors les robots seront indéfiniment redirigé...
Aurez un script à me montrer STP :?:

Merci d'avance

Dan_A > ça à l'air très complet, mais la gestion d'une pseudo base répertoriant les user_agent m'ennuie quelques peu... :? Je me lancerais dans cette façon de faire si ma première idée ne se conclue pas.

@+ :wink:
 
WRInaute discret
En règle générale, les robots n'acceptent pas d'être redirigés. Si le reste de la page suit la redirection, pas de problème : s'il y a un cookie, c'est que les cookies sont acceptés, sinon et en fonction de l'audience, c'est entre 6 et 9 fois sur 10 un robot.
On peut faire plus complexe, on redirige en ajoutant une variable en bout d'URL, si elle est présente on ne redirige pas (le tout, c'est de ne pas avoir la page avec la variable indexée)...
 
WRInaute accro
Tchup a dit:
Salut Dan_A et KOogar,

KOogar > j'ai donc cherché dans cette direction, mais je n'arrive pas faire en sorte que la redirection ne se fasse qu'une seule fois ! Parce que si la redirection (réactualisation de la page) s'exécute si le cookie n'est pas trouvé, alors les robots seront indéfiniment redirigé...
Aurez un script à me montrer STP :?:

Merci d'avance

je me souvient plus trop et tout est ranger dans des classes, mais basiquement le shema ressemble a ca:

tu tests le cookie, si celui n'existe pas tu le creer. Quelque soit le cas tu redirige sur l'uri. Il faut un bon serveur si tu veux que cela reste transparant.

Code:
<?php

if(isset($_COOKIE['nom_cookie']))  $cookie = 1;
if($cookie) { header('location: ' . $_SERVER['REQUEST_URI'] . ''); }
else { setcookie('nom_cookie');
       header('location: ' . $_SERVER['REQUEST_URI'] . ''); }

?>
 
Discussions similaires
Haut