k
<?
include("../connect/cfg.php");
// Variabler der skal bruges
// Vi starter med at finde IP adressen for brugeren
// Denne kode er testet på flere sites, og i øvrigt taget fra PHP’s online dokumentation
$IP = $_SERVER['REMOTE_ADDR'];
$FIP = $_SERVER['HTTP_X_FORWARDED_FOR']; //Vi finder IPen hvis brugeren har brugt en ikke-anonym proxy server
Vi checker så om det lykkedes. Gjorde det det erstatter vi den direkte fundne IP med den vi fandt igennem proxy'en
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP;
$IP = explode(",", $IP);
$IP = $IP[0];
// Vi finder brugerens hostmask, ud fra IP adressen
$hostmask = gethostbyaddr($IP);
// Vi bruger time() til at få et slags timestamp for lige nu
// Det er antallet af sekunder siden 1. januar 1970 (UNIX epoch)
$timenow = time();
// Vi sætter deletetime til 10 minutter før “lige nu” :)
$deletetime = $timenow-(600);
// Vi finder adressen på den nuværende side
$onlineurl = "
http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; // Vi får lige et rigtigt menneskeligt tidspunkt, til at smide i databasen
// Til det bruger vi date, med en parameter der fortæller hvilket format det skal være i
$tidnu = date("H:i:s");
// Selve opdateringen/indsætningen
// Vi låser tabellen. Dette sørger for at vi ikke får inkonsistente data,
// samt giver hurtigere opdaterings forespørgsler
@mysql_query("LOCK TABLES onlineusers WRITE") or exit;
// Vi sletter brugere der ikke har været online de sidste $deletetime
// dvs. 10 minutter (600 sekunder / 60)
$deletequery = mysql_query("delete from onlineusers where lastseen_stamp < '$deletetime'");
// Vi tjekker, ud fra IP adressen, om brugeren allerede er i tabellen
$tjekquery = @mysql_query("select id from onlineusers where IP like '$IP'");
if(mysql_num_rows($tjekquery) == 0) {
// Brugeren var der ikke, vi indsætter “ham” lige
$query = mysql_query("insert into onlineusers (ip, lastseen_stamp, url, title, lastseen, hostmask) values
('$IP','$timenow', '$onlineurl','$title','$tidnu','$hostmask')");
} else {
// Brugeren var der skam allerede, så vi opdaterer “hans” tid data
// samt sideadresse, titel
$query = mysql_query("update onlineusers set lastseen_stamp='$timenow', url='$onlineurl',
title='$title', lastseen='$tidnu' WHERE IP like '$IP'");
}
// Vi låser tabellen op igen
@mysql_query("UNLOCK TABLES") or exit;
?>
linie 8 er: Vi checker så om det lykkedes. Gjorde det det erstatter vi den direkte fundne IP med den vi fandt igennem proxy'en
og har prøvet at inkludere en config..