begin process at 2012 05 27 22:24:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > COMPTEUR DE CLICS

COMPTEUR DE CLICS


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :compteur, clics, facile Niveau :Débutant Date de création :20/12/2002 Date de mise à jour :02/02/2008 12:45:40 Vu :9 627

Auteur : Dean

Ecrire un message privé
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

 Description

Ceci est un compteur de clics assez simple séparé en deux parties, un fichier "download.php" qui doit être situé à la racine du site et une fonction, get_clicks() qui permet de récupérer le nombre de clics.
Je vous mets un exemple pour comprendre son utilisation :

J'ai un fichier "test.zip" dont l'adresse relative à partir de la racine est "downloads/test.zip".
Dans ma page de téléchargement, je fais un lien du genre <a href="download.php?url=downloads/test.zip">Télé charger</a>.
Pour afficher le nombre de clics associé au fichier, il suffit de faire un <?php print get_clicks('downloads/test.zip') ?>

Voilà ! J'espère que vous avez compris ! Notez que ce script et très sommaire mais il peut en éclairer certains. Vous pouvez aussi l'adapter à votre goût, car dans le cas présent, il n'accepte que les URL relatives. Il y a seulement une modification à faire (au niveau du header()) pour qu'il accapte également les URL absolues. Je vous laisse vous débrouiller !

Source

  • DÉBUT DU SCRIPT "download.php"
  • <?php
  • /* Téléchargement avec mise à jour du compteur de clics
  • * ============================================================
  • * Auteur : Dean
  • * Version : 2.0b3 (08-12-2002)
  • * ============================================================
  • */
  • header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  • header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
  • header('Cache-Control: no-store, no-cache, must-revalidate');
  • header('Cache-Control: post-check=0, pre-check=0', false);
  • header('Pragma: no-cache');
  • $clicks_file = 'clicks/' . rawurlencode($_GET['url']) . '.txt';
  • // Crée le compteur s'il n'existe pas
  • if(!file_exists($clicks_file))
  • fclose(fopen($clicks_file, "w"));
  • // Incrémente le compteur
  • $fp = fopen($clicks_file, 'r+');
  • $clicks = fread($fp, 9) + 1;
  • rewind($fp);
  • fwrite($fp, $clicks);
  • fclose($fp);
  • // Effectue la redirection vers le fichier
  • header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . dirname($_SERVER['PHP_SELF']) . '/' . $_GET['url']);
  • ?>
  • FIN DU SCRIPT "download.php"
  • FONCTION POUR RÉCUPÉRER LE NOMBRE DE CLICS
  • <?php
  • function get_clicks($file) {
  • $clicks_file = 'clicks/' . rawurlencode($file) . '.txt';
  • return file_exists($clicks_file) ? join('', file($clicks_file)) : 0;
  • }
  • ?>
DÉBUT DU SCRIPT "download.php"

<?php

/* Téléchargement avec mise à jour du compteur de clics
 * ============================================================
 * Auteur : Dean
 * Version : 2.0b3 (08-12-2002)
 * ============================================================
 */

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

$clicks_file = 'clicks/' . rawurlencode($_GET['url']) . '.txt';

// Crée le compteur s'il n'existe pas
if(!file_exists($clicks_file))
  fclose(fopen($clicks_file, "w"));

// Incrémente le compteur
$fp = fopen($clicks_file, 'r+');
$clicks = fread($fp, 9) + 1;
rewind($fp);
fwrite($fp, $clicks);
fclose($fp);

// Effectue la redirection vers le fichier
header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . dirname($_SERVER['PHP_SELF']) . '/' . $_GET['url']);

?>

FIN DU SCRIPT "download.php"




FONCTION POUR RÉCUPÉRER LE NOMBRE DE CLICS

<?php

function get_clicks($file) {
  $clicks_file = 'clicks/' . rawurlencode($file) . '.txt';

  return file_exists($clicks_file) ? join('', file($clicks_file)) : 0;
}

?>  



 Historique

02 février 2008 12:45:40 :
j'ai juste enlevé mon mail (spam)

 Sources du même auteur

RENOMMAGE MASSIF DE FICHIERS
NOMBRE DE FICHIERS DANS UN RÉPERTOIRE
INSTALLER PHP-GTK SOUS EASYPHP
COMPTEUR DE CONNECTÉS
Source avec une capture OBTENIR LES ADRESSES E-MAIL D'UN TEXTE

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette
Source avec Zip CREATED SOME TINY URL par ledamss
Source avec Zip Source avec une capture MYPHPCOM 2.1: SYSTÈME DE COMMENTAIRE PHP/MYSQL par Dariumis

Commentaires et avis

Commentaire de mehdibou le 20/12/2002 17:58:35

J'ai fais le mm script pour mon site mais qd je click sur mon lien, le contenu du fichier est affiché. Pour un txt, ça va mais pour un exe... ça n'ouvre pas la fenêtre IE pour le dl

Commentaire de Dean le 20/12/2002 20:12:49

C bizarre car le download est une simple redirection gérée par un header("Location: http://...");
Je ne vois pas d'où vient le pb.

Commentaire de Dean le 20/12/2002 20:14:03

C bizarre car le download est une simple redirection gérée par un header("Location: http://...");
Je ne vois pas d'où vient le pb.

Commentaire de lerak le 21/12/2002 10:44:36

Ce script est idéal pour les fichiers à télécharger. Il suffirait peut-être de mélanger un peu de javascript avec una ppel du lien dans la balise Body : &lt;body onload=fonctionLien&gt; Fonction mise à jour en fonction de ton parametre URL.

Pour des compteurs de page individuelles, existe t-il autre chose que cette technique qui nécesite tout de même de modifier tous les liens déjà existant.

sur free on peut avoir les stats de son site page à page, mais sur son propre serveur que faut il ecrire comme script

Commentaire de Dean le 21/12/2002 13:00:08

Effectivement, c'est un peu différent pour les pages individuelles.

Une méthode consisterait à appeler un script qui incrémente un compteur via un include() dans chacune de tes pages. La nom du compteur serait créé en fonction du nom de la page (un peu comme dans ce script). De cette manière, tu ne serais pas obligé de modifier les liens.

Commentaire de Kirua le 15/02/2003 13:39:07

super, merci poru ce script. c'est ingénieux d'utiliser les redirections de cette manière ^^

Commentaire de Kirua le 15/02/2003 14:00:52

ouf enfin installé ^^ j'ai du corriger qq petites choses, parce que avec l'extension .zip en bout d'url ça ne marchait pas.mais c "réparé" ^^

merci !

Commentaire de Dean le 15/02/2003 14:06:26

Si ça peut intéresser quelqu'un, j'ai aussi fait une version MySQL qui fonctionne de la même manière (les clics sont cettes fois-ci enregistrés dans une table) :

&lt;?php

/* Mise à jour du compteur de clics et redirection
* Auteur : Dean &lt;charloweb@hotmail.com&gt;
* Version : 2.0b2 (2002-11-30)
*/

require('mysql.inc.php'); /* ce fichier établit une connexion à la base MySQL */

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

/* On met à jour la table 'files' d'après l'ID passée en paramètre, car on invoque le script de cette manière: download.php?id=xxx */
mysql_query("UPDATE files SET clicks=clicks+1 WHERE id=" . $_GET['id']);

/* On récupère l'URL correspondante */
$url = mysql_fetch_row(mysql_query("SELECT url FROM files WHERE id=" . $_GET['id']));

// On redirige
header("Location: " . $url[0]);

?&gt;

Commentaire de b0uH le 23/03/2003 12:13:44

mwé on peut faire plus simple quand meme

Commentaire de Kirua le 23/03/2003 14:29:05

peu importe plus simple ou pas.
techniquement, c'est plus rapide avec la formule mysql ou avec les fichiers ?

Commentaire de Dean le 23/03/2003 15:05:25

Sous Free, c'est (beaucoup) plus rapide avec les fichiers, mais MySQL a d'autres avantages (moins de code, URL masquée...).

Les deux techniques se valent, si l'on utilise MySQL pour faire sa page de download alors il est préférable de faire du "tout MySQL", si l'on fait un parcours dynamiques des dossiers alors il vaut mieux utiliser les fichiers...

Commentaire de Kirua le 23/03/2003 15:06:50

k, thx

Commentaire de pyroflo le 23/04/2003 18:54:42

Désolé, je débute en PHP et....j'arrive pô à faire fonctionner le compteur :(
Que faut-il modifier exactement ? Où cela se trouve dans la source stp ?
Et si tu pouvais metrre un zip avec un fichier txt contenant la source entière d'une page PHP où se trouverait un compteur de clics qui fonctionne. Comme ça, ça aiderait les débutants (comme moi !).
Merci !!!

Pyroflo
http://www.abcpyro.fr.st

Commentaire de Kirua le 23/04/2003 21:13:06

courage, le php c'est facile, d'ici peu tu vas créer des trucs de roxor en peu de temps ;)

Commentaire de pyroflo le 23/04/2003 21:15:22

T'es optimiste dis-moi !!!

Mais pour ce fameux compteur de clics, comment faire alors ?

Commentaire de Dean le 23/04/2003 21:15:27

(Pour pyroflo : je ne pensais pas que Kirua allait me devancer ;-))

Salut,

C'est vrai que mon script n'est pas très évident pour les débutants, donc je vais en profiter pour ajouter quelques précisions.

Premièrement, il faut créer un dossier "clicks" situé dans le même répertoire que le fichier "download.php".

Ensuite, il suffit de remplacer ton URL de téléchargement par download.php?url=monfichier.zip (par exemple). Normalement un fichier texte contenant le nombre de clicks est créé.

Dans ma description j'ai effectivement parlé de modifications à faire, mais cela dépend en fait de tes besoins, en l'occurence si tu veux utiliser des URLs absolues (avec http://...).

Voici le bout de code qu'il faut remplacer :

// Effectue la redirection vers le fichier
header('Location: ' . $_GET['url']);

Simple, non ?

C'est vrai que je devrais peut-être mettre un zip mais bon j'ai la flemme :-)

Commentaire de Kirua le 23/04/2003 21:18:13

lo,l j'ai reçu illico 3 mails pour dire qu'il y avait des réponses :P

Commentaire de pyroflo le 23/04/2003 21:20:28

lol moi quand j'ai posté mon message et que la page s'est rechargée, eh ben il y avait le commentaire de Dean !

Bon merci je vais essayer maintenant et je vous tiens au courant oky ?
(je pense que je vais encore recevoir des mails moi.....)

Commentaire de Kirua le 23/04/2003 21:23:32

oui, en revoilà un ^^
je vais laisser cette fenêtre ouverte
pyroflo, tu peux m'ajouter à ta liste msn (si tu as) si t'as besoin d'un coup de main en php, je crois que je devrais pouvoir t'aider (si t'es débutant surement ;))

Commentaire de pyroflo le 23/04/2003 21:33:44

Kirua &gt; je viens de t'envoyer un message sur ta messagerie Codes-Sources ;)

Commentaire de Kirua le 23/04/2003 21:34:47

j'ai vu (pauvre dean qui est mailbombé ^^)

Commentaire de Dean le 24/04/2003 14:32:15

C'est bon je suis toujours vivant ! Alors pyroflo tu as réussi l'installation ? J'espère que Kirua t'a été de bon conseil :-)

Commentaire de Kirua le 24/04/2003 14:34:39

euh, j'ai bienessayé mais ... pyroflo a commencé le php ... hier, oui ^^ alors c t dur d'expliquer
je lui ai filé des adresses en béton pour apprendre le php

il a son pc depuis 2 mois, c t dur d'expliquer les langages serveurs / clients, la programmatino objets, les redirections par en têtes en php et les choses auxquelles il faut faire attention :s

Commentaire de Dean le 24/04/2003 14:43:45

Je comprends... Dans deux ou trois semaines ça devrait mieux aller ;-)

Commentaire de Kirua le 24/04/2003 18:26:53

je suppose. il faut pas plus pour se mettre au php.

Commentaire de pyroflo le 24/04/2003 18:29:26

Espérons !

Commentaire de drzed le 29/10/2003 13:12:30

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');

A koi ca sert ??

Commentaire de Patrice H le 20/03/2006 15:26:51

Bonjour

Je suis grand débutant en plein de choses dont javascript et php.

J'ai essayé ce code tel quel.
J'ai créé avec dreamweaver une page index.php et une autre download.php (cette dernière est un copier-coller du source)

Voici index.php

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php include "download.php" ?>
</head>

<body>
<a href="download.php?url=test.zip">téléchargement</a>
</body>
</html>
et voici la liste des erreurs fournis en lançant index.php par easyphp

DÉBUT DU SCRIPT "download.php"
Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 16

Notice: Undefined index: url in d:\essai php\download.php on line 18

Notice: Undefined index: url in d:\essai php\download.php on line 32

Warning: Cannot modify header information - headers already sent by (output started at d:\essai php\index.php:5) in d:\essai php\download.php on line 32
FIN DU SCRIPT "download.php" FONCTION POUR RÉCUPÉRER LE NOMBRE DE CLICS téléchargement


Quelqu'un peut-il m'aider malgré l'ancienneté de la source.
Merci.

Commentaire de lerak le 20/03/2006 16:37:50

Alors pour ce qui est de la première erreur "connot modify header information" :
Tu ne peux pas modifier le header si tu as déjà demandé (par tes scripts) d'écrire du contenu sur la page. Il faut modifier les header (ou les définir) avant toute chose !
Ensuite seulement tu affiche des choses sur ta page.

Pour la deuxième, je en sais pas, je n'ai pas assez dinformation :=)

Commentaire de Dean le 24/03/2006 21:17:59

Hello,

Inclus ton fichier avant le <html>. Cela peut paraître bizarre pour un utilisateur de HTML pur, mais c'est en fait utilisé dans de nombreux scripts PHP (par exemple pour induire une compression GZip de la page...)

Cette remarque est probablement inutile puisque j'imagine que le problème a été résolu ; on progresse vite dans ce domaine. ;)

Commentaire de Patrice H le 24/03/2006 23:14:36

Effectivement, j'ai résolu le problème aprsè plusieurs tentatives infructueuses. en fait l'exemple semble être du php3 et mon easyphp est en version 4 et même 5 depuis que j'ai uploader cette version de php.
De plus je me suis acheté php5 de Stéphane MARIEL et Php5 avancé de Eric Daspet et Cyril Pierre de Geyer.
Je me convertis très vite à ce nouveau langage qui me semble très prometteur et que l'on classifie un peu trop rapidement en créateur de page Web côté serveur. Il semble pouvoir faire beaucoup plus.
Par contre la non compatibilité descendante me parait bien dommage. Un article permettant de comparer les trois versions (3, 4 et 5), en particulier pour la visibilité des variables serait le bienvenu. Il existe peut-être déjà mais le mettre en exergue éviterait aux nouveaux de se prendre la tête et surtout de penser que celui qui a posté un bout de code en 2003 n'a même pas testé.
A plus

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compteur de clics sur un bouton [ par jipe32 ] Bonjourje possede un moteur de recherches et je voudrais savoir si on pouvais compter le nombre de clics sur le bouton rechercher.merciJipe32 Compteur de clics [ par cotp ] Bonjour. Je souhaite implementer un compteur de clics en php MYSQL car je ne trouve pas mon bonheur sur le web.En effet je souhaite que ce compteur pu compteur d'intervantion [ par plopinou ] Bonjour,&nbsp;je voudrai creer un compteur d'intervention.JE vois pas trop comment faire, car je veux qu'il compte chaque intervention, meme si on ref ouverture page apres x clics [ par gzt ] bonjourj'aimerais crer un compteur sur une page bien precise et qu'une autre page s'ouvre au bout de X ouverture de la premiere pageest il possible de Adresse ip + compteur [ par lugdanum ] Bonjour tout le monde Pourriez-vous m'aider un peu en me disant ce qui ne marche pas dans mon code? : <? $table = "NomDeMaTable"; $user = "User"; $pa récupération d'un compteur auto dans une table SQL [ par KieferS ] Salut,J'ai cr&#233;&#233; un formulaire sur lequel appara&#238;t un compteur&nbsp;automatique qui s'incr&#233;mentre &#224; chaque fois qu'un utilisat [Debutant] Jaimerais faire un compteur [ par dxh_master ] BOnjourJaimerais faire un compteur qui affiche juste&nbsp; le nombre de visite de la journ&#233;&nbsp; :D sans mysql&nbsp;&nbsp; comment faire???Merci compteur de téléchargement sans MySQL [ par Patrice H ] Tout est dans le titreJe souhaite savoir combien de fois un fichier de mon site a &#233;t&#233; t&#233;l&#233;charg&#233;. J'ai vu plusieurs codes pro compteur de connectés EN TEMPS REEL avec base SQL, c'est possible d'après vous? [ par David_monchy ] Bonjour &#224; tousJe dois effectuer un compteur de connect&#233;s assez particulier:dans ma base, pour chaque utilisateur, j'ai un champ 'connecte' q Erreur avec un tableau [ par taxidogkiller ] Bonjour ! Je souhaite créé un tableau qui affiche des rubrique et qu'il y est 3 rubrique d'affiché par ligne ( j'ai mis un petit espace de séparation


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales