[PHP] Utenti collegati, check tramite IP
Salve amici, oggi sono qui per illustrarvi un semplicissimo script, facile all'uso e all'installazione!
Lo script di cui voglio parlarvi è uno script che segna gli utenti collegati tramite il controllo degli indirizzi ip che salva su file di testo.
Quindi niente SQL. :wink:
Per cominciare vi mostro il codice:
Codice PHP:
<?
#CLASSI.PHP BY PEO (SCRIPT_PRESENZE OPEN SOURCE) http://leo91.altervista.org
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 "<a href='http://leo91.altervista.org'>Utenti connessi: $quanti</a>";//MOSTRA "Utenti connessi: *numutenti*"
}
}
?>
Questa è l'importante pagina classi.php dove è contenuta la classe Ospite che si occupa di tutto lo script.
Questo codice è molto lungo, ma l'unica cosa che vi serve a modificare questo script sta nell'intervallo di tempo il quale l'utente deve considerarsi scollegato.
In parole povere vi basti modificare, dove lo trovate, il numero 120 che sta ad indicare i secondi, cioè 2 minuti.
Cambiando quel numero potrete decidere quando considerare l'utente on-line e off-line. Consiglio comunque di non abbassarlo sotto il minuto (60).
Potete modificare un'altra cosa, ovvero l'output che visualizza "Utenti connessi:" che è nella terzultima riga. Li potete scrivere la frase da visualizzare, ma non modificate il nome della variabile ($quanti).
Potete naturalmente mettere codice html come ad esempio per visualizzare una scritta rossa modificherete così:
Codice PHP:
<?
#ALTRO CODICE
echo "<font color='red'>Utenti connessi: $quanti</font>";
#ALTRO CODICE
?>
E ora che avete fatto la vostra bella classe, richiamatela dove volete visualizzare il numero di utenti connessi in questo modo:
Codice PHP:
<?
include("classi.php");
$tutto = new Ospite();
$tutto->Aggiorna();//Aggiorna lo stato dell'utente
$tutto->Inserisci();//Inserisce se ip nuovo
$tutto->Check();//Controllo sugli utenti (disconn/conn)
$tutto->Mostra();//Mostra infine il risultato
?>
Fatto, ora il vostro counter per gli utenti on-line funziona!