Fichier d'historique des connexions (log) à une page (sans mysql)

Contenu du snippet

A chaque chargement du script, une ligne est ajoutée au fichier d'historique présenté sous forme d'une liste à plusieurs colonnes : action, jour, heure, login, ip, os et navigateur.
pour mes besoins j'ai 3 types d'enregistrements : connexion, ouverture de compte et fermeture de compte.
L'intérêt principal de ceci est de ne pas utiliser de base de données (cela est util pour certains), mais le script est donc forcément de plus en plus lent au fur et a mesure du nombre de visites (mais rien de rédibitoire, rassurez vous!)
Donc si vous utilisez une base (mysql...), préférez un accès base qu'une modification comme celle ci d'un fichier texte :)

Source / Exemple :


Page "log.html" :
________________________________________________________________
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Fichier Log</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />
<div align="center"><h1>Fichier Log</h1></div>
<table width="80%"  border="0" cellspacing="2" cellpadding="0" align="center"><thead>
Légende : &nbsp; &nbsp; <span style="font-face: Courier New, Lucida Console; font-weight: bold;">=></span> Logged in &nbsp; &nbsp; <span style="font-face: Courier New, Lucida Console; font-weight: bold; background-color: #44DD44;">++</span> Subscribed &nbsp; &nbsp; <span style="font-face: Courier New, Lucida Console; font-weight: bold; background-color: #DD5555;">--</span> Unsubscribed &nbsp; &nbsp; 
<br><br></thead>
<tr><th>Action</th><th>Jour</th><th>Heure</th><th>Login</th><th>Adresse IP</th><th>Système d'exploitation</th><th>Navigateur</th></tr>
<tr><td style="font-face: Courier New, Lucida Console; font-weight: bold;" align="center">=></td><td>11/05/2004</td><td>20:03</td><td>mout</td><td>192.168.0.22</td><td>Windows XP</td><td>Internet Explorer</td></tr>
________________________________________________________________

script à intégrer dans une page d'autentification par exemple :
________________________________________________________________
<?php
//detection des parametres de l'utilisateur :
$agent = $_SERVER['HTTP_USER_AGENT'];
/*  navigateur :  */
if ($agent == "") {  }
elseif (eregi("MSIE", $agent)) {  $nav="Internet Explorer"; }
elseif (eregi("Mozilla", $agent)) { $nav = "Netscape"; }
else { $nav = "Autres"; }
if ($agent == "") { }

/*  WINDOWS  */
elseif (eregi("Windows", $agent))
{
        if(eregi("95", $agent)) { $os = 'Windows 95'; }
        elseif (eregi("98; Win 9x", $agent)) { $os = 'Windows Me'; }
        elseif (eregi("98", $agent)) { $os = 'Windows 98'; }
        elseif (eregi("NT 5.0", $agent)) { $os = 'Windows 2000'; }
        elseif (eregi("NT 5.1", $agent)) { $os = 'Windows XP'; }
        elseif (eregi("NT", $agent)) { $os = 'Windows NT'; }
        else { $os = 'Autres Windows'; }
}

/*  LINUX  */
elseif (eregi("linux", $agent)) { $os = 'Linux'; }

/*  BEOS  */
elseif (eregi("beos", $agent)) { $os = 'BeOS'; }

/*  AUTRE  */
else { $os = 'Autres'; }

$ip=$_SERVER["REMOTE_ADDR"];

/*------------------------------------------*/

	$filename = "log.html";
	$file = fopen($filename, "r");
	$log_avant = fread($file, filesize($filename));
	fclose($file);
	$file = fopen($filename, "w");
	$color = "#FFFFFF"; //couleur d'arriere plan de la ligne en cours (est changé chez moi selon le type de connexion (simple, inscription ou desinscription)
	$log_apres = $log_avant."<tr style=\"background-color: $color;\"><td style=\"font-face: Courier New, Lucida Console; font-weight: bold;\" align=\"center\">=></td><td>".date("d/m/Y")."</td><td>".date("H:i")."</td><td>$login</td><td>$ip</td><td>$os</td><td>$nav</td></tr>\r\n";
	fwrite($file, $log_apres); 
	fclose($file);
?>

Conclusion :


La fin de la page html est volontairement laissée ouverte (pas de </body></html> ni de footer) car on y rajoute directement les lignes...

A voir également

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.