Der er desvære ikke en indbygget funktion i PHP til det, IP er efter min mening det bedste. Og den gemmer ikke noget til senere alt blivet slettet når time-out\'en er gået. Sættes den til f.eks 5min er er der ingen oplysninger på folk der sidst har været aktiv f.eks 6min siden. Der er ikke flere rows i databsen end der er folk online.
<?php /* CREATE TABLE userlog ( id int(11) DEFAULT \'0\' NOT NULL auto_increment, ip char(255), name char(255), date char(255), PRIMARY KEY (id) ); */ $database= \"**\"; $table= \"**\"; $sqlhost= \"**\"; $sqluser= \"**\"; $sqlpass= \"**\";
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( \"Couldn\'t connect to MySQL server!\"); mysql_select_db($database) OR DIE( \"Couldn\'t select database!\");
global $REMOTE_ADDR; $ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time = explode(\" \", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $deleteuser = mysql_query(\"delete from userlog where date < $usersec -300\"); $userlog = mysql_fetch_row( mysql_query(\"select * from userlog where ip like \'$ip\'\"));
if($userlog == (false)) $ok = @mysql_query(\"insert into userlog (id,ip,name,date) values (\'\',\'$ip\',\'$host\',\'$usersec\')\"); $resultlogtab = mysql_query(\"select count(*) as total from userlog\"); $numberlogtab = mysql_fetch_array($resultlogtab); echo($numberlogtab[\"total\"]); mysql_close(); ?>
I toppen er datasen som skal bruges.. Den skal bare inkluderes med denne linje:
Ja, det kan gøres uden MySQL, men jeg vil ikke råde det til nogle, jeg har prøvet det på en server der havde 10-15 næsten konstant og det var MEGET sløvt. Men hvis jeg falder over scriptet igen skal jeg nok huske dig, det bruge fil læsning/skrivning i stedet men ellers det samme som alle de andre scripts postet her.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.