Come creare un access log in php

Come creare un access log in php

Qualche tempo fa utilizzavo un file presente sul mio sito come firma in altri (tanti) siti/forum, e poi lo rimossi… Rimuovendolo, però, mi toccò rimuoverlo anche dai vari siti e forum per evitare errori 404 e firme danneggiate (che non fan mai bella figura).

Tuttavia, da qualche parte doveva essere rimasta questa firma dato che, qualche volta, ritrovavo errori 404 su quel file anche se, date le impostazioni della privacy dei browser moderni (referer eliminato praticamente ovunque), mi era impossibile trovare l’origine (e google non mi aiutava).

Giusto per provare, ho scritto un log in php così da ottenere qualche info in più, e sperare che tra quegli accessi qualcuno lasciasse il referer!

Beh, è successo esattamente così (e il file l’ho trovato sulla mia firma nel forum di giorgiotave – forum che frequento poco, ma dove son registrato da tempo, e avevo la firma, e quindi – grazie a questo log – adesso l’ho sistemata).

Questo il logger scritto al volo che mi ha aiutato:

<?php

//filename
$file = 'log.html';

//write access time
$log = "<b>Time:</b> ".date('H:i dS F')."<br/>\n" ;

//write user lang
$log .= "<b>Lang:</b> ".(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtoupper(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)) : "No Lang (???)")."<br/>\n" ;

//write user IP address
$log .= "<b>Ip Address:</b> ".(isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR']." | ".gethostbyaddr($_SERVER['REMOTE_ADDR']) : "No Ip (???)")."<br/>\n";

//write referer
$log .= "<b>Referer:</b> ".(isset($_SERVER['HTTP_REFFERER']) ? $_SERVER['HTTP_REFFERER'] : "No Referer :(")."<br/>\n";

//write user agent
$log .= "<b>User Agent:</b> ".(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "No User Agent (???)")."<hr/>\n";

//and final, put all in log file
file_put_contents( $file, $log, FILE_APPEND | LOCK_EX );

?>

Potete includerlo in un file html come fosse un’immagine, (img src… tanto non rilascia output) o con include in un file php, e loggerà in un file html ogni accesso con tanto di orario, ip, host, lingua, useragent… Insomma, un po’ di tutto!

Esempio di output:

Time: 16:15 24th May
Lang: IT
Ip Address: 79.32.**.** | host**-**-dynamic.32-79-r.retail.telecomitalia.it
Referer: No Referer 🙁
User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0


Time: 16:17 24th May
Lang: IT
Ip Address: 79.32.**.** | host**-**-dynamic.32-79-r.retail.telecomitalia.it
Referer: No Referer 🙁
User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

e così per ogni altro accesso…

Insomma, un mini access log in php (ma proprio base base – non ha nemmeno l’html di base!) per ogni evenienza, che a volte può rivelarsi utile 🙂

Se avete consigli su come migliorarlo… beh, commentate pure 😉




Lascia un commento