Fichiers log, stats, traces du passage des visiteurs sur un site

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 350 fois - Téléchargée 28 fois

Contenu du snippet

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 / Exemple :


// 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');

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
5 novembre 2006

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 !!
Messages postés
5
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
5 novembre 2006

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 :( :( ;)
Messages postés
3
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
27 novembre 2005

Ayé c'est tout bonnement im-pé-cable !!!
Merci pour tout je vais le recommander chaudement autour de moi ;)
Messages postés
70
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 mars 2007

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.
Messages postés
3
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
27 novembre 2005

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 ;)
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.