begin process at 2012 05 27 20:13:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > FICHIERS LOG, STATS, TRACES DU PASSAGE DES VISITEURS SUR UN SITE

FICHIERS LOG, STATS, TRACES DU PASSAGE DES VISITEURS SUR UN SITE


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :statistiques, utilisateurs, ip, visiteurs, traces Niveau :Débutant Date de création :28/06/2004 Date de mise à jour :27/11/2005 18:00:48 Vu :9 553

Auteur : gergalp

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

 Description

Ce petit bout de code permet a un webmaster de connaitre les ips de ses visiteurs, les pages qu'ils visitent et s'il y a une zone membre, cela permet de connaitre le pseudo du visiteur. Le code est fait pour phpBB, mais il peut être adapté à la sauce de n'importe quel site en modifiant seulement les noms des variables.

Source

  • // On définit un nom de fichier texte en fonction de la date en cours
  • $filename = date('d-m-Y') . '.txt';
  • // On définit un nom de dossier en fontion de la date
  • $folder = date('M-Y');
  • // si besoin, on créé un dossier avec portant le nom du mois et de l'année en cours
  • $path = $phpbb_root_path . 'logs/' . $folder . '/';
  • !is_dir($path) ? @mkdir($path) : '';
  • // On ouvre le fichier ou l'on va écrire les données
  • $fp = fopen($path . $filename, 'a');
  • fseek($fp, 0);
  • // Chaine de formattage de la date, changez-la si vous la trouvez trop longue ou pas à votre gout ;)
  • $date_str = 'D d M Y H:i:s T(O)';
  • // Utile seulement si une zone membre existe
  • $username_str = (isset($userdata['username']) ? $userdata['username'] : '-');
  • // on fait en sorte que les informations importantes soient formattées comme dans un tableau
  • // cette partie n'est pas indispensable
  • $export = sprintf('[%30s] %15s %25s - %20s - Agent: %s'."\n",
  • date($date_str),
  • $_SERVER['REMOTE_ADDR'],
  • $username_str,
  • $_SERVER['PHP_SELF'],
  • $_SERVER['HTTP_USER_AGENT']);
  • // on écrit dans le fichier texte
  • fputs($fp, $export);
  • fclose($fp);
// On définit un nom de fichier texte en fonction de la date en cours
$filename = date('d-m-Y') . '.txt';
// On définit un nom de dossier en fontion de la date
$folder = date('M-Y');

// si besoin, on créé un dossier avec portant le nom du mois et de l'année en cours 
$path = $phpbb_root_path . 'logs/' . $folder . '/';
!is_dir($path) ? @mkdir($path) : '';

// On ouvre le fichier ou l'on va écrire les données
$fp = fopen($path . $filename, 'a');
fseek($fp, 0);

// Chaine de formattage de la date, changez-la si vous la trouvez trop longue ou pas à votre gout ;)
$date_str = 'D d M Y H:i:s T(O)';

// Utile seulement si une zone membre existe
$username_str = (isset($userdata['username']) ? $userdata['username'] : '-');

// on fait en sorte que les informations importantes soient formattées comme dans un tableau
// cette partie n'est pas indispensable
$export = sprintf('[%30s] %15s %25s - %20s - Agent: %s'."\n",
               date($date_str),
               $_SERVER['REMOTE_ADDR'],
               $username_str,
               $_SERVER['PHP_SELF'],
               $_SERVER['HTTP_USER_AGENT']);

// on écrit dans le fichier texte
fputs($fp, $export);
fclose($fp);

 Conclusion

Pas de grosse difficulté au niveau de la complexité du code :)


pour phpBB:
placer le code dans le fichier ./includes/page_header.php, dans les dernières lignes du fichier, juste avant:

$template->pparse('overall_header');


 Historique

27 novembre 2005 12:35:21 :
Allègement du code: le serveur ne fait pas une reverse-DNS à chaque page affichée(j'avoue c'était pas tres malin de le mettre) utilisation de sprintf plutot que 3 boucles for(ca non plus c'était pas tres malin :P) Amélioration des fonctionnalités: Meilleur formattage des fichiers qui
27 novembre 2005 18:00:49 :
oubli d'une parenthèse dans la mise à jour précédente qui provoquait un parse error

 Sources du même auteur

Source avec Zip Source avec une capture [POO] HIGHLIGHT_FILE SUR DES FICHIERS EN C/C++
CRYPATGE/DÉCRYPTAGE DE TEXTE
Source avec Zip CLASSE D'ANALYSE DES ID3 V1 CONTENUS DANS LES MP3
VÉRIFICATION DE LA PRÉSENCE D'UN SERVEUR

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture MESVISITEURS par pgl10
Source avec Zip Source avec une capture GÉOLOCALISATION DE VOS VISITEURS (REVISÉ) par yoman64
Source avec Zip QUI VISITE QUOI? par kiwi1nut
TRACES DU VISITEUR D'UN SITE (IP, PROXY, IP_DERRIÈRE_PROXY,D... par dulxolix
Source avec Zip Source avec une capture STATS FAI par ImmortalPC

Commentaires et avis

Commentaire de defkrie le 29/06/2004 18:47:44

je viens juste de finir la meme chose cette semaine, histoire de me remettre entierement au php...
tu a oublié de faire une page pour le traitement et l'affichage des données.

Commentaire de gergalp le 29/06/2004 21:10:17

ben en fait, pour l'affichage des données, c'est apache qui se charge de donner le contenu du dossier logs/ bien sur, il faut le protéger avec un .htaccess/.htpasswd

sinon, si tu veux interpréter pour faire des stats, je pense qu'il vaut mieux utiliser mysql, comme ca, c'est plus simple de récupérer seulement ce qui t'intéresse.

Commentaire de Skykro le 16/04/2005 21:57:24

Juste une petite correction sur une erreur dans le format de l'heure dans cette ligne :

$spy['time'] = date(' D d M Y H:m:s');

Pour indiquer les minutes, on utilise "i" et non "m" (sinon on obtient le nombre correspondant au mois en cours)
En tout cas, merci, ce code m'est bien utile.

Commentaire de gergalp le 17/04/2005 03:21:41

exact. on peux aussi ajouter O ou T pour le fuseau horaire, mais je pense pas que ce peit détail mérite une mise a jour

Commentaire de HelpeurDotCom le 26/11/2005 15:01:33

Ce script est génial. Le seul souci que j'ai pu remarquer pour le moment, c'est qu'intégré à un forum phpBB il n'est pas en mesure de donner quelques points pourtant bien utiles :

- L'URL complète (Il ne prend en effet pas l'url rewriting et considère que viewtopic ou viewforum.php est suffisant sans s'étendre sur les variables qui suivent permettant de localiser précisément le topic ou forum consulté),
- Le login des membres est plus qu'aléatoire car il ne reconnaît que les 'Guest' sans se soucier du cookie ni de la session.

Il serait bon de préciser dans quel fichier intégrer le script car après essai dans les templates et dans les includes celà reste comme çà.

Par contre, effectivement, il enregistre bien (après création du répertoire 'logs' chmodé en 777) les dates, heures, IPs, browsers des visiteurs, ce sans aucun problème.

Merci donc, de préciser la manière de faire pour identifier les membres et l'url complète afin d'obtenir un script qui mérite d'obtenir un oscar au salon des script PHP utiles voir vitaux pour tout webmaster qui se respecte.

Zef

Commentaire de gergalp le 27/11/2005 11:44:39

Woh, ca fait plaisir :D

Ca fait un petit moment que j'ai fait ce script, et je me souviens plus exactement ou je l'avais placé dans phpBB, mais il me semble qu'il était au début du fichier includes/page_header.php

Commentaire de gergalp le 27/11/2005 12:38:35

J'ai mis à jour a source, elle devrait marcher beaucoup plus fort.

Commentaire de HelpeurDotCom le 27/11/2005 13:41:17

Heu... Oui et non !

Je m'explique le pseudo est bien inscrit dans le fichier log sans
souci par contre il reste deux petits soucis :

-1- l'url complète n'est toujours pas prise en compte (comme je le signalais avant il ne mentionne que le fichier source sans les variables ?=blabla ou l'url rewriting en html)

-2-tout se marque sur la même ligne sans aucun séparateur comme précédemment (|) ce qui est très gênant pour l'interprétation surtout quand il y a plus de 50 personnes d'inscrites dans ce log.

Le principe est superbe, le résultat obtenu pas mal du tout, il reste à paufiner.

(Désolé j'aurai bien aidé mais je débute en php)

Je me suis permis de modifier un poil la source pour obtenir un affichage comme désiré :

// Chaine de formattage de la date, changez-la si vous la trouvez trop longue ou pas à votre gout ;)
$date_str = 'd M Y à H:i:s T(O)';

// Utile seulement si une zone membre existe
$username_str = ($userdata['username'] ? $userdata['username'] : 'Visiteur');

..car la valeur précédente du $username_str provoquait un parse error.

Merci encore ;)

Commentaire de gergalp le 27/11/2005 18:06:23

pour le parse error, c'est corrigé, pour le reste.... ce n'est que du détail: pour la chaine de formattage de la date, c'est une question de quantités d'informations contenues; cacun a des demandes différentes. Pour afficher l'URL complète, il te suffit de remplacer le  $_SERVER['PHP_SELF'] par  $_SERVER['REQUEST_URI'], c'est tout.

Commentaire de HelpeurDotCom le 27/11/2005 19:10:02

Ayé c'est tout bonnement im-pé-cable !!!
Merci pour tout je vais le recommander chaudement autour de moi ;)

Commentaire de Pierrot_421 le 05/11/2006 13:44:34

beeeeennnn   !!!! Moi quand je met le code dans la page includ/page_header.php, ça me bloque l'accès à la messagerie privé, quand on clique sur le lien des M.P, au lieu d'afficher les dossiers de la messagier, ça met : ce dossier n'existe pas
J'ai essayé de coller ce code en plein plein d'endroits différents de la page header.php, mais rien à faire, ça me bloqsue la visualisation des dossers des M.P (my version oh PhpBb est la dernière en date)
Merci de toutes infos, parce que je l'aimais bien, moi, ce petit script :( :(  ;)

Commentaire de Pierrot_421 le 05/11/2006 13:47:22

Petite prcision : j'ai meme tenté par un include
include ('log.php');
mais rien à faire ,kif-kif, blocage de la fonction de la messaegie privé --> le dossier n'existe pas !!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

l'IP des visiteurs d'un blog [ par shigure ] Je voudrais enregistrer l'IP des visiteurs de mon blog.Mon blog est sur 20six.Pour l'enregistrement des données, soit vers un fichier *.txt sur un ftp probleme update et delete [ par blinix123 ] Bonjour à tous, alors voila, j'ai un script qui me permet de compter le nombre de visiteurs totale et le nombre de visiteurs en ligne, or bien evidemm Informations de vos visiteurs par email [ par bigrat ] [b]Recevoir les informations des personnes qui passe sur votre site web.[/b] [code=php]<? $lang = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; $user = $_SERVER[" Connaître l'IP des visiteurs [ par bigcheek ] Bonjour à tous,Je suis assez débutant en php et je souhaiterai connaître l'adresse ip des personnes visitant une certaine page de mon site.Je me suis comment connaître et mémoriser l'adresse IP des visiteurs de mo, site [ par fouque ] rebonjour, je voudrais connaître et mettre dans un fichier les adresses IP des visiteurs de mon site. je suis un novice , avez-vous un code en html o enregistrer l'IP des visiteurs de son site [ par jeanclod13 ] Bonjour à tous, J’ai créé un site sur ma copropriété avec une zone réservée aux copropriétaires pour y accéder pour ceux qui le souhaitent chacun a u FERank - Mesure d'audience professionnelle [ par amo 2a ] Bonjour, Etant en phase finale de développement je me permet de vous présenter notre outils d'analyse statistique. (Si je ne me trouve pas dans la bo Classement visiteurs par clef [ par audiogenic ] Bonjour, Je vais vous expliquer mon problème. Alors je construis un site de statistiques de sites distant pour webmasters(mes clients), à l'intérieur comment empêcher une poste à accéder à mon site connaissant son IP [ par sahliali ] Je vient de créer un site web intranet et je veut réaliser une table dont laquelle j'enregistre tous les traces d'un visiteur parmis ces traces son IP Sondage, reconnaissance IP... [ par jojomillenium ] Hello!Voila ma question. Je propose un sondage sur mon site, et j'aimerai interdire le vote multiple...J'ai alors fait le test de l'adresse IP enregis


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,484 sec (4)

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