statistiek
laatste wijziging: 2011-02-26 09:42
het bovenstaande is het resultaat van een meertalige applet (klik voor de code) die het bestand
iplog_hcc.html analyseert. In dat bestand worden de bezoekers van mijn site bij de HCC geregistreerd (de HCC, omdat deze site vooralsnog weinig bezoekers heeft.)
Op elk blad van de HCC site staat:
<!-- stat code -->
<script language="JavaScript" src="mystat.js"></script>
<noscript>
img src="http://frankabbing.net16.net/mystat.php" alt="" height="0">
</noscript>
<!-- stat code -->
Bij de HCC kan je geen PHP gebruiken, daarom verwijst de code naar deze site.
Het bestand mystat.js:
var OS="???";
if (navigator.appVersion.indexOf("Win")!=-1) OS="Win";
if (navigator.appVersion.indexOf("Mac")!=-1) OS="Mac";
if (navigator.appVersion.indexOf("X11")!=-1) OS="UNX";
if (navigator.appVersion.indexOf("Linux")!=-1) OS="Lix";
var brsr = navigator.appName;
var nAgt = navigator.userAgent;
var vers = ''+parseFloat(navigator.appVersion);
var colord = window.screen.colorDepth;
var dref = document.referrer;
var res = window.screen.width + "x" + window.screen.height;
var nameOffset,verOffset,ix;
if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
brsr = "MSIE";
vers = nAgt.substring(verOffset+5);
}
else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
brsr = "Opera";
vers = nAgt.substring(verOffset+6);
}
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
brsr = "Chrome";
vers = nAgt.substring(verOffset+7);
}
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
brsr = "Safari";
vers = nAgt.substring(verOffset+7);
}
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
brsr = "Firefox";
vers = nAgt.substring(verOffset+8);
}
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) )
{
brsr = nAgt.substring(nameOffset,verOffset);
vers = nAgt.substring(verOffset+1);
if (brsr.toLowerCase()==brsr.toUpperCase()) {
brsr = navigator.appName;
}
}
if ((ix=vers.indexOf(";"))!=-1) vers=vers.substring(0,ix);
majorVersion = parseInt(''+vers,10);
if (isNaN(majorVersion)) {
vers = ''+parseFloat(navigator.appVersion);
}
ix = vers.search(/\(/);
if(ix<0 || ix >8) ix = 8;
else ix--;
vers = vers.substring(0,ix);
document.write("<img src='http://frankabbing.net16.net/mystat.php?ref="+res+"<td>"+colord+"<td>"+OS+"<td>"+brsr+"<td>"+vers+"<td>"+dref+"' width='0' height='0'>");
De tijd is bij PHP de tijd van de server, in dit geval zes uur te vroeg. Door te zeggen wat je eigen tijdzone is (CET, Centraal Europese Tijd) krijg je de lokale tijd.
Er is een probleem: Javascript draait op jouw machine, de PHP scripts worden op de server uitgevoerd. Hoe krijg je de gegevens van Javascript naar PHP? Heel in het kort, geknipt uit het bovenstaande:
document.write("<img src='mystat.php?ref=enzovoorts");
Je doet hier alsof mystat.php een plaatje is. De server ziet dat dat niet zo is (aan de uitgang .php) en interpreteert mystat.php. Dat bevat:
<HTML>
<HEAD><TITLE>ip rapport</TITLE></HEAD>
<BODY>
<?php
$fil = fopen("iplog_hcc.html", "a");
$ip = $_SERVER['REMOTE_ADDR'];
$hr = $_SERVER['HTTP_REFERER'];
date_default_timezone_set("CET");
$tijd = date("Y-m-d, H:i");
$ref = $_GET['ref'];
if( $ip != "81.206.189.138"){
fwrite($fil,"<tr><td><b>$ip</b>");
fwrite($fil,"<td>$tijd");
fwrite($fil,"<td>$ref");
$hr = substr($hr,31,20);
if($hr != null) fwrite($fil,"<td>$hr");
else fwrite($fil,"<td>---");
fwrite($fil,"\n");
}
fclose($fil);
?>
</BODY></HTML>
Het resultaat van dit alles wordt geschreven in iplog_hcc.html. De kop van dat bestand moet je zelf maken! Er wordt een 'table' begonnen waaraan telkens een regel wordt toegevoegd. Die 'table' wordt niet netjes afgesloten, browsers blijken daar geen problemen mee te hebben. Kop van dit bestand:
<HTML>
<head><style>
body{font-family:sans-serif; background:#ffa; color:#000;}
td, th{font-size:70%; padding-right:5px; vertical-align:top;}
</style></head>
<body>
<h2>IP LOG</h2>
<table>
<tr><th width="100">IP<th width="100">datum, tijd
<th width="70">scherm<th width="30">kleur<th width="35">OS
<th width="60">Browser<th width="25">vs<th width="260">van
<th width="160">naar
Dit bestand moet beschrijfbaar zijn! Code 666, instellen via het Control Panel van de provider. (of met AceFTP, de freeware versie is goed genoeg)
zie ook Javascripter