Låt oss säga att vi är intresserade av ett fåtal saker om våra medlemmar: IDnr, namn, epost, lösenord och huruvida de är online eller ej. Högst troligtvis är du intresserad av fler saker (*), men för att förenkla så mycket det går. Det senare håller vi reda på genom att hela tiden lagra tiden för senaste gången en sida laddas. Vår databastabell blir då: (tex)
CREATE TABLE Medlem (
ID INT PRIMARY KEY auto_increment NOT NULL,
Namn VARCHAR(40) NOT NULL UNIQUE,
Epost VARCHAR(40) NOT NULL UNIQUE,
Pass CHAR(32) NOT NULL,
SenAktiv DATETIME)
I detta exempel säger vi att ID är nyckelvärdet, och detta kommer databasen snällt att räkna upp åt dig. Du behöver/ska aldrig lägga in något på denna plats. Varje ny medlem får ett högre heltalsvärde än personen före. Vidare får fälten Namn, Epost och Pass inte vara tomma - de första två får heller inte förekomma mer än en gång i tabellen. Pass bör inte lagras rakt av, det bör lagras i krypterad form exvis med md5, därav typen. SenAktiv är avsett att lagra den tid medlemmen senast laddade en sida.
Hur håller du koll på om man är inloggad eller ej? :q Via cookies, sessions eller på annat sätt? Inte helt oväsentligt om du vill ha exempelkod...
Låt oss anta att du har en funktion inne() i filen koll.php som antingen via cookies eller sessions kollar om en person är inloggad och lämnar tillbaka sant/falskt.
Sedan ser du till att samtliga filer som kan laddas på servern, högst upp börjar med att uppdatera SenAktiv. Exempel där $_SESSION används:
<?php
session_start();
include_once("/<sökvägen i fildir på servern - EJ URL:n>/koll.php");
if (inne()) {
$sql = "UPDATE Medlem SET SenAktiv = NOW()
WHERE ID = ".$_SESSION['sess_id'];
//Förutsatt att du lagrar medlemmens ID i sess_id.
mysql_query($sql) or die();
}
Sedan, på din login-sida hämtar du de som senast varit aktiva inom den tidsrymd som du vill betrakta någon som inloggad efter senaste hämtning av sida. Säg, tex 50 minuter:
$sql = "SELECT Namn FROM Medlem
WHERE SenAktiv > DATE_SUB(NOW( ) , INTERVAL 50 MINUTE )";
Kör och hämtar ut på vanligt vis.
Om något är oklart, återkom.
______
* : Du kan vilja lagra mer saker. Exvis en indikator som påslagen har effekten att vederbörande är "ban":ad och således ej får posta, tex.