Come controllare quanti utenti sono connessi al sito tramite il linguaggio php.
ALLWEB free
Web Directory Script Linguaggi
Italiano Inglese Tutte
 
 29 Jul 2010
rss directory aggiungi in preferiti  
Home    Mappa directory    Giochi    XXXDirectory    Script    Forum




Script Visitatori OnLine:

Questo script si articola in due pagine:
Navigatori presenti nelle due pagine dell'articolo user online:
Online: 1

INFO:
Lo script si articola in due punti fondamentali, ossia la creazione della tabella dove confronteremo i dati, e la creazione di una nuova pagina (dove inseriremo lo script) che poi sarà inclusa in tutte le pagine da controllare.



Tabella MySql:

Per prima cosa dobbiamo creare la tabella dove inseriremo i dati. Per farlo basta inserire questa query all'interno di PhpMyAdmin:

CREATE TABLE `useronline` (
`id` varchar(100) NOT NULL default '0',
`data` int(100) NOT NULL default '0',
PRIMARY KEY (`id`)
);
INSERT INTO `useronline` (`id`, `data`) VALUES (1, 0);
Come Fare?
Entrate in PhpMyAdmin, cliccate sul nome del database (nello spazio a sinistra), cliccate sul link "SQL" (in alto), adesso copiate ed incollate il testo qua sopra nel form di esecuzione query. Premete "esegui".

Se la query è eseguita con successo vedrete un messaggio che lo notifica e la nuova tabella nel lato sinistro.
ATTENZIONE alla punteggiatura durante il copia/incolla



Parametri query script:

Per uniformare lo script per ogni navigatore, abbiamo inserito i dati di connessione al database in alcune variabili. Sono parametri che solo il webmaster conosce, pertanto dovrete configurare le cinque righe successive con i vostri dati di accesso al database.
$host="localhost";
$database="il-nome-del-tuo-database";
$user="il-tuo-user-database";
$password="la-tua-password-database";
$tabella="useronline";//il nome della tabella che abbiamo creato
NON COPIARE/INCOLLA, troverai queste righe nello script.



Script:

Per prima cosa dobbiamo creare un file con estensione .php dove memorizzeremo il nostro script (Per convenzione lo chiameremo useronline.php).
Adesso dobbiamo copiare il codice sottostante ed incollarlo nel nostro file useronline.php

N.B. Per chi non conosce le basi del php i segni // indicano un commento, e sono ininfluenti per lo svolgimento dello script, potete copiare/incollare lo script così come lo vedete.


<?
$host="localhost";
$database="nome_del_tuo_database";
$user="user_per_accedere_al_database";
$password="password_per_accedere_al_database";
$tabella="useronline";
$linkdata=@mysql_connect($host,$user,$password);//riga parametri di collegamento database

//ricavo il codice ip e l'orario
$codip=$_SERVER['REMOTE_ADDR'];//estraggo il codice ip del navigatore
$tempo=time();//ricavo il timestamp, numero che identifica l'orario del momento

//adesso verifico se il codice ip è nella tabella oppure no
$ric=@mysql_db_query($database,"select data from ".$tabella." where id='".$codip."' ",$linkdata);
$numric=@mysql_num_rows($ric);
if($numric!=0){//se l'ip è nella tabella aggiorno l'orario
@mysql_db_query($database,"update ".$tabella." set data=".$tempo." where id='".$codip."' ",$linkdata);
}
else{//se l'ip non è nella tabella lo inserisco
@mysql_db_query($database,"insert into ".$tabella."(id, data) values ('".$codip."','".$tempo."')",$linkdata);
//se in questo punto aumentiamo di 1 il numero di data dove id=1 (la prima riga della tabella) avremo anche un contatore di accessi del sito
}

//adesso elimino tutte le righe che eccedono nella differenza tempo
$difdata=$tempo-120;//120 sono secondi, in pratica elimino tutti gli ip che non si collegano ad una pagina da almeno due minuti
$ric2=@mysql_db_query($database,"select data from ".$tabella." where id!=1 ",$linkdata);
$veric2=@mysql_num_rows($ric2);
$numlinee=0;
while ($numlinee<$veric2){
$data=@mysql_result($ric2,$numlinee,"data");
if($data<$difdata){
@mysql_db_query($database," delete from ".$tabella." where data=".$data." ",$linkdata);
}
$numlinee++;
}
//tabella dove vedremo in numero dei navigatori online:
$fine=@mysql_db_query($database,"select * from ".$tabella." where id!=1 ",$linkdata);
$online=@mysql_num_rows($fine);
echo"<table><tr><td>Online : ".$online."</td></tr></table>";

//selezioniamo un numero casuale (per non stressare il database) che ottimizza la tabella, in alcune condizioni per ottimizzare la tabella occorre circa un secondo, pertanto cercate di ottimizzarla unatantum
$ran=rand(0,5);
if($ran==5){
@mysql_query("OPTIMIZE TABLE ".$tabella." ");
}
?>

Per allungare o diminuire la differenza tempo stimato di permanenza in una pagina è necessario modificare il numero della variabile $difdata (nello script a 120 secondi).
Se aumentiamo il valore prenderemo più navigatori, al contrario diminuiranno.


Inclusione:

Adesso che abbiamo creato il nostro script lo dobbiamo mettere in uso.
Per farlo dobbiamo includere la pagina dello script (per noi chiamata useronline.php) in ogni pagina del sito da controllare.

Nelle pagine dove non includiamo lo script non vedremo la tabella con il numero, ma cosa più importante non potremo prendere nota degli utenti che vi stanno stanno navigando.
Pertanto suggeriamo di cancellare le righe finali (dove scriviamo la tabella) ma di inserire ugualmente la pagina con lo script.

Per inserire la pagina è sufficente inserire questo codice nel punto esatto dove volete visualizzare la tabella:
<?
@include("useronline.php");
?>
N.B.
il segno @ è utilizzato per inserire un comando senza la possibilità di vedere a video errori di tipo warning.
Se non vedete il risultato dello script provate a togliere le chioccioline per vedere dov'è segnalato l'errore (ma ricordate che anche i navigatori vedranno il messaggio).


Possibili errori:

Per descrivere lo script abbiamo inserito dei commenti (iniziano con //) che risultano su più righe per colpa dell'impaginazione del sito.
Tali righe devono stare su una sola riga!
Altrimenti vedrete a video il seguente errore:
Parse error: syntax error, unexpected T_STRING in /.../.../.../vostrosito.it/.../useronline.php on line..


Limiti script:

Lo script in oggetto memorizza i codici IP univochi del navigatore. Questo script è solo un punto di partenza per nuovi sviluppi, in effetti ha un limite molto grosso, in pratica non riesce a distinguere se un navigatore utilizza un codice IP pubblico di un proxi.
Visto le numerose offerte telefoniche non è da escludere che alcuni codici IP risultino identici fra navigatori diversi.
Per ovviare a questo problema una soluzione potrebbe essere di inserire al posto del codice IP una variabile numerica che identifica il navigatore tramite cookie o sessioni.



TORNA ALLA PRIMA PAGINA








Warning: Unknown: write failed: Disk quota exceeded (122) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/home/allweb/tmp/) in Unknown on line 0