compteur et actualisation ?

compteur et actualisation ? - PHP - Programmation

Marsh Posté le 23-05-2007 à 19:49:20    

Bonjour a tous,
 
J'ai un petit problème avec un script que j'ai trouvé sur internet, je maitrise trés peu le php et je fais donc appel a votre aide.
 
Alors voila, mon but est d'installer sur une page un compteur afin de savoir combien de fois telle page a pu être visitée, indépendemment de l'IP.
 
J'ai donc un petit script qui ajoute 1 dans un fichier texte à chaque fois que la page est visitée.
Cependant pour plus de précision, je souhaiterais que lorsque le visiteur actualise la page en question, cela ne soit pas compté comme une visite.
Serait t'il possible d'ajouter 1 si et seulement si le visiteur vient d'une page définie (page ou se trouve le lien), ou alors de désactiver l'ajout de la valeur 1 losque le visiteur actualise sa page.
Cependant je ne souhaite pas qu'on ne compte qu'une visite par IP (le visiteur pouvant revenir sur la page une heure plus tard ou meme 5min plus tard), ce qui complique, je crois, ma tache.
 
Voici mon code :  

Citation :

<?  
$fich="cpt.txt"; /* nom du fichier compteur */
$fp=fopen("$fich","r+" ); /* Ouverture du fichier en lecture/ecriture */
$cpt=fgets($fp,10); /* lecteur des 10 premiers caractères */  
$cpt++; /* Incrémente le compteur de 1 */  
fseek($fp,0); /* Déplacment du pointeur au début du fichier */  
fputs($fp,$cpt); /* Ecriture de la nouvelle valeur du compteur */
fclose($fp); ?>


 
Voila... si vous pouviez m'aider se serait super.
 
Merci.

Reply

Marsh Posté le 23-05-2007 à 19:49:20   

Reply

Marsh Posté le 23-05-2007 à 20:09:31    

Si tu veux pas utiliser de sessions ou autres, tu peux tout simplement faire pointer tes liens vers tapage.php, mais après l'itération du redirige (avec un header() ) le visiteur vers tapage.php?visited=1.
Avant d'exectuer ton itération tu contrôle que !isset($_GET['visited']).

Reply

Marsh Posté le 23-05-2007 à 20:18:29    

Merci a toi pour ta réponse rapide... mais comme je l'ai préciser je ne maitrise pas du tout le php...
serait-il possible pour toi de rajouter dans mon code ce que ca donne exactement... parceque la je vois pas comment faire...
Désolé.
 
Merci


Message édité par Officieum1 le 23-05-2007 à 20:19:02
Reply

Marsh Posté le 23-05-2007 à 21:03:52    

Quelqu'un peu m'aider ?????
S'il vous plait

Reply

Marsh Posté le 23-05-2007 à 21:57:17    

Code :
  1. if(!isset($_GET['visited']))
  2. {
  3. $fich="cpt.txt"; /* nom du fichier compteur */
  4. $fp=fopen("$fich","r+" ); /* Ouverture du fichier en lecture/ecriture */
  5. $cpt=fgets($fp,10); /* lecteur des 10 premiers caractères */ 
  6. $cpt++; /* Incrémente le compteur de 1 */ 
  7. fseek($fp,0); /* Déplacment du pointeur au début du fichier */ 
  8. fputs($fp,$cpt); /* Ecriture de la nouvelle valeur du compteur */
  9. fclose($fp);
  10. header("Location: /tapage.php?visited=1" );
  11. }


Message édité par Big-Foot le 23-05-2007 à 23:35:08
Reply

Marsh Posté le 23-05-2007 à 22:43:22    

ca ne marche... malheureusement pas.
Merci quand même si vous avez une autre idée..
Jes suis prenant.
Merci.

Reply

Marsh Posté le 23-05-2007 à 23:35:55    

j'avais écrit une connerie, voilà c'est corrigé.

Reply

Marsh Posté le 24-05-2007 à 08:30:21    

Warning: Cannot modify header information - headers already sent by (output started at /mnt/138/sda/3/8/###########/######/compteur.php3:13) in /mnt/138/sda/3/8/###########/######/compteur.php3 on line 73
 
la ligne 13 correspondant a l'ouverture de mon script avec <?
et la ligne 73 : header("Location: /tapage.php?visited=1" );}
 
Voila...
Je comprend pas tout.

Reply

Marsh Posté le 24-05-2007 à 12:02:11    

Tu dois mettre ce bout de script en début de code, il ne doit y avoir rien qui soit envoyé au client avant. En gros tu dois placer tout ça avant même la balise <html> de ta page.
N'hésite pas à utliser la doc de php, elle est très complète et accessible:
http://ch2.php.net/manual/fr/function.header.php
 
Et si jamais dans :
header("Location: /tapage.php?visited=1" );}  
"tapage" est à remplacer par le nom de ta page hein.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed