Preso da una mia piccola creasione:
Codice PHP:
<?
#CLASSI.PHP BY PEO © (SCRIPT_PRESENZE OPEN SOURCE) [url]http://leo91.altervista.org[/url]
class Ospite{
function Aggiorna(){//Funzione che serve ogni volta che l'ospite fa qualcosa. Aggiorna il suo dato di vita
$ip = $_SERVER['REMOTE_ADDR'];
$file = file("logged.txt");
foreach($file as $rigo) {
$ex = explode("|",$rigo);
if($ex[0] == $ip) {
$w[] = "$ip|".(time()+120)."|\n";
}else{
$w[] = $rigo;
}
}
$ok = implode("",$w);
$fp = fopen("logged.txt","w+");
fwrite($fp,$ok);
fclose($fp);
}
function Guarda(){//Funzione di controllo che serve alla funzione seguente
$ip = $_SERVER['REMOTE_ADDR'];
$file = file("logged.txt");
foreach($file as $rigo){
$ex = explode("|",$rigo);
if($ex[0] == $ip) {
return "falso";
}
}
}
function Inserisci(){
$ip = $_SERVER['REMOTE_ADDR'];
$pro = $this->Guarda();
if($pro != "falso") {
$fp = fopen("logged.txt","a+");
fwrite($fp,"$ip|".(time()+120)."|\n");//Inserisco un massimo di 120 secondi prima che l'ospite non venga più contato
fclose($fp);
}
}
function Check(){//Serve a cancellare gli ospiti disconnessi(che non fanno azioni prima di 120 sec.)
$file = file("logged.txt");
$tempo = time();
foreach($file as $rigo) {
$ex = explode("|",$rigo);
if($ex[1] < $tempo){
$w[] = "";
}else{
$w[] = $rigo;
}
}
$ok = implode("",$w);
$fp = fopen("logged.txt","w+");
fwrite($fp,$ok);
fclose($fp);
}
function Mostra(){//Serve a mostrare gli utenti connessi
$file = file("logged.txt");
$quanti = count($file);
if($quanti == "") {$quanti = "0";}
echo "[url='http://leo91.altervista.org']Utenti connessi: $quanti[/url]";//MOSTRA "Utenti connessi: *numutenti*"
}
}
Questa era la pagina classi.php
Codice PHP:
<?
#SCRIPT PER LE PRESENZE BY PEO ©
include("classi.php");
$tutto = new Ospite();
$tutto->Aggiorna();
$tutto->Inserisci();
$tutto->Check();
$tutto->Mostra();
?>
Questa invece presenti.php
Ti basti sapere che con quel codice non c'è un log-in, ma conta solamente gli ospiti on-line..Puoi opportunatamente eseguire qualche modifica per renderlo ok con il tuo forum 
Ciaooo