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?
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.