Contatore con sessioni PHP:
Variabile sessione =
Variabile somma = 1
Costante sessione = 9fc4e152f54d4af5a5babe165998517c
Se vi siete collegati adesso in questa pagina, le tre righe nel riquadro qua sopra hanno i seguenti valori:
Variabile sessione =
Variabile somma = 1
Costante sessione = numero da 32 caratteri
E adesso prendete nota dei numeri dei contatori più in basso (uno nero e l'altro rosso).
Dopo aver fatto questo ricaricate la pagina (refresh-aggiorna).
Avrete notato che le scritte nel riquadro sono variate ad eccezione di
Costante sessione.
Da adesso fino a quando chiuderete il browser non varieranno più, e con loro resterà invariato
il numero del contatore rosso, che prima di entrare nella pagina (la prima volta, e non avete
visto il cambiamento) era una unità più piccolo.
In pratica il server si ricorderà di voi.
Solo se avete i cookie attivati nel vostro browser!!!
Contatore con sessioni PHP:
Questo articolo nasce dall'esigenza di approfondire la conoscenza delle sessioni php.
Se avete letto la sezione
PHP Sessioni avrete capito
che questo argomento riguarda chi ha una certa confidenza con il linguaggio PHP, tuttavia
proveremo a spiegare con esempi pratici e comprensibili anche per i neofiti del settore.
Esempi pratici:
1) contatore con sessioni PHP e MySql:
Se ricaricate la pagina (refresh)
il numero non varia.
62633
2) contatore con PHP e MySql:
Ogni volta che ricaricate la pagina (refresh)
il numero aumenta di 1.
84337
Spiegazione:
Se avete seguito le istruzioni iniziali, e se avete i cookie attivati sul vostro browser avrete
notato che il contatore rosso non varia, mentre il contatore nero varia ad ogni refresh della
pagina.
Se non avete attivato i cookie la variabile
$somma rimane sempre ad
1,
sommando
ogni volta un ingresso nella pagina, e variando anche il contatore rosso.
In pratica abbiamo creato un contatore di accessi unico che si attiva una sola volta, oppure
ogni volta se non avete i cookie attivati.
PREMESSA:
Prima di vedere il codice supponiamo di avere:
$database = nome del vostro database;
$tabella = nome della tabella;
$host = nome vostro host;
$user = nome vostro user;
$password = vostra password database;
Tabella MySql:
| id | contatore | contatore2 |
| 1 | ... | ... |
Codice contatore con sessioni (rosso):
<?
session_start();//Iniziamo la sessione
$nuvisi=$_SESSION['nuvisi'];//Creo la variabile per aumentare il numero delle visite
$PHPSESSID=session_id();//Estraggo il numero univoco della sessione
if ($nuvisi!=1){//Chiedo se $nuvisi è diverso da 1. Si se è il primo collegamento
$somma=1;//Imposto la variabile somma=1
$_SESSION['nuvisi']=1;//Imposto $nuvisi a 1, da adesso non entro più inquesto ciclo if
}
else{//se $nuvisi==1 imposto $somma=0
$somma=0;
}
echo "Variabile sessione = ".$nuvisi."<br>";
echo "Variabile somma = ".$somma."<br>";
echo "Costante sessione = ".$PHPSESSID;
?>
<html>//Inizio della pagina HTML
<head>
</head>
<body>
<?//Inizio del codice PHP che interagisce col database MySql
$connessione = mysql_connect($host,$user,$password);
$risultaticontatore=mysql_db_query($nomedatabase,"select contatore from ".$tabella." where id=1 ",$connessione);
$clic=mysql_result($risultaticontatore,0,"contatore");
if ($somma==1){//$somma è uno solo se è la prima volta che ci connettiamo
$clic++;//Aumentiamo i clic di uno
mysql_db_query($nomedatabase,"update ".$tabella." set contatore=".$clic." where id=1 ",$connessione);//Salviamo il nuovo numero di clic nel database
}
?>
<div style="...">//Scrivo il contatore
<?
echo $clic;//Scrivo i clic nella tabella
?>
</div>
</body>
</html>
Se lavoriamo con una versione PHP precedente alla 4.0.1 dobbiamo variare il codice PHP iniziale come riportato di seguito:
<?
session_start();//Iniziamo la sessione
session_register("numingressi");//Definiamo la variabile della sessione
$numingressi=$_SESSION['numingressi'];//recupero la variabile globale dalla sessione
$PHPSESSID=session_id();//identifico il numero univoco della sessione (opzionale per alcune configurazioni host)
if ($numingressi==null){//Se la sessione non era aperta eseguiamo il ciclo if
$somma=1;
$numingressi=1;
}
else{//Se la sessione era aperta non eseguiamo il ciclo if(la variabile di sessione era già definita)
$somma=0;
}
echo "Variabile sessione = ".$numingressi."<br>";//Lista variabili scritte in alto
echo "Variabile somma = ".$somma."<br>";
echo "Costante sessione = ".$PHPSESSID;
?>
P.S. Abbiamo dato per scontato che si conosca le
query di connessione al database MySql.
Codice contatore MySql (nero):
In pratica una semplice connesione MySql con la variazione dati tabella.
<html>
<head>
</head>
<body>
<?
$connessione = mysql_connect($host,$user,$password);//Stabiliamo la connessione
$risultaticonnessione2=mysql_db_query($database,"select contatore2 from ".$tabella." where id=1 ",$connessione);//Stabiliamo la variabile per la ricerca dati
$clic2=mysql_result($risultaticonnessione2,0,"contatore");//Troviamo il risultato del contatore nero
$clic2++;//Aumentiamo i clic di uno
mysql_db_query($nomedatabase,"update ".$tabella." set contatore=".$clic2." where id=1 ",$connessione);//Salviamo il nuovo numero di clic nel database
?>
<div style="...">//Scrivo il contatore
<?
echo $clic2;//Scrivo i clic nella tabella
?>
</div>
</body>
</html>