IP_log

Bonjour,

Nouveau ChuWikiste, au passage merci aux auteurs de ce sympathique software, j'ai souhaité avoir un log des IP des visiteurs.
J'ai trouvé ce script que j'ai un peu modifié et qui fonctionne parfaitement.
Je l'ai mis à la fin du fichier wiki.php.

// IP log
$TextFile = "log.html";
$contents = file_get_contents($TextFile);
$CurrentDate = date("d-m-y H:i");
$ip = (isset($_SERVER)) ? $_SERVER['REMOTE_ADDR'] : $HTTP_SERVER_VARS['REMOTE_ADDR'];
$log = $CurrentDate.' - '.$ip."<br />\n".$contents;
if($FP = fopen($TextFile, "w")){
fwrite($FP, $log);
fclose($FP);
}
//

Il suffit de créer un fichier log.html CHMOD 777 dans le même répertoire pour récupérer les enregistrements.

J'avais trouvé cet autre script, plus complet, mais je n'arrive pas à le faire fonctionner, un spécialiste en php pourrait-il m'aider ?
Le problème semble se situer au niveau de la ligne fputs...

<?
$time = date("F jS Y, h:iA"); //using the date() function
$ip = $REMOTE_ADDR; //$remote_addr is PHP variable to get ip address
$referer = $HTTP_REFERER; //$http_referer is PHP variable to get referer
$browser = $HTTP_USER_AGENT; //$http_user_agent is PHP variable for browser

$fp = fopen("log.html", "a"); //use the fopen() function

fputs($fp, "Time: $timeIP: $ipReferer: $refererBrowser: $browser"); //using the fputs() function

fclose($fp); //closing the function
?>

Cordialement,
JL


Ne manque-t-il pas des espaces entre $time et IP, entre $ip et Referer, entre $referer et Browser ?
Pierre


Merci. C'est la première chose que j'ai essayée, ça ne change rien, je n'enregistre que la date.

JL


Voilà, j'ai essayé aussi.

J'ai ajouté les espaces indispensables et un retour à la ligne (\r) et cela fonctionne parfaitement chez moi:

Time: March 17th 2006, 10:31PM IP: 82.246.xx.xx Referer:  Browser: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8
Time: March 17th 2006, 10:32PM IP: 82.246.xx.xx Referer:  Browser: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8

Il n'y a pas de Referer car j'ai appelé directement IP_log.php.

Pour résumer:

fputs($fp, "Time: $time IP: $ip Referer: $referer Browser: $browser\r"); //using the fputs() function

Pierre


Bonjour,

Merci, j'ai essayé comme ça, mais ça ne fonctionne pas chez moi. Je n'obtiens toujours que la date de la première connexion.
Ce n'est pas grave, le premier script fonctionne par contre très bien et le log est plus léger.

JL


Peut-être un problème de version PHP. Les versions antérieures à 4.1 n'acceptent pas $REMOTE_ADDR au lieu de $_SERVER['REMOTE_ADDR'] précédemment.
Pierre


Saluts les codeurs !

Dites, on peut ainsi même créer directement une page (dans le répertoire pages) hisoitre d'intégrer les logs dans le wiki.

Fabio ^_^ (2006-05-31)


Voilà ce que je fais:

<?php
$mois = array('', 'Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre');
$jour = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$datefr = $jour[date("w")].' '.date("j").' '.$mois[date("n")].' '.date("Y");
$Heure = date("G");
$Minute = date("i");
$ip = $_SERVER["REMOTE_ADDR"];
if ($ip=="xx.xx.xx.xx") // votre propre IP
{$ip="God";} //  :-))
$page = $_SERVER['REQUEST_URI'];
$browser = $_SERVER['HTTP_USER_AGENT'];

$fp = gzopen("./pages/zzzz_log/20060606235900.gz", "a");
gzputs($fp, "$datefr $Heure h $Minute IP: $ip Page: $page Navig: $browser %%%");
gzclose($fp);
?>

Pierre


Grosse erreur

Vous n'avez pas le droit de divulger les ips des gens. Les ips sont des information confidentielle, et les afficher, ca irait à l'encontre de la loi française (cf cnil.fr)


Dans ce cas mettre un simple rajout au htaccess suffit pour protéger la page de log...


Dans ce cas il ne faudra pas les enregistrer dans /pages/, même si il y a un .htaccess, en effet, celles ci seraient appelées du serveur, donc je doute (à confirmer) que celà ne suffise. Le mieux est de créer un dossier à part au niveau de la racine. (remarque il est vrai que pour trouver le nom du dossier, ici "zzzz_log", faut vraiment avoir que ca à faire ^^)