PHP: GESTIRE LOGIN TRAMITE LE SESSIONI CON DATABASE MYSQL
PHP: GESTIRE LOGIN TRAMITE LE SESSIONI CON DATABASE MYSQL
Tramite il PHP è possibile memorizzare alcuni dati rendendoli disponibili per accessi successivi. Questo è possibile utilizzando le sessioni.
Le variabili della sessione sono memorizzate nell’array $_SESSION che, come per gli array $_GET e $_POST, ci viene messo a disposizione dal PHP. Supponiamo di avere una variabile di sessione chiamata “nome“, possiamo richiamarla in questo modo:
<?php session_start(); echo $_SESSION["nome"]; ?>
|
La funzione “session_start()” serve per inizializzare la sessione. Maggiori dettagli sono disponibili alla pagina ufficiale di php.net
Ora vediamo un esempio pratico: gestire un login tramite le sessioni di PHP con dati salvati su database MySQL.
Per fare cio’, creeremo 3 pagine: index.php, loggato.php e logout.php.
La pagina index.php conterrà la form per effettuare il login, il controllo tramite POST dei dati immessi e il re-indirizzamento alla pagina loggato.php in caso di esito positivo. Inoltre, se un utente non ha effettuato il logout tramite la pagina logout.php deve essere re-indirizzato alla pagina loggato.php
session_start(); // inizializzo la sessione
if (isset($_SESSION["id"]) && ($_SESSION["id"]!=0))
{
/* se l'utente è già loggato viene reindirizzato per continuare la sua sessione */
header("location: loggato.php");
}
?>
EFFETTUA IL LOGIN
/* controllo dati POST */
if (isset($_POST["submit"]) && ($_POST["submit"]=="ENTRA"))
{
require("dbconnect.php"); /* connessione al database */
$username=trim(addslashes($_POST["username"])); /* evito SQL-Injection */
$password=trim(addslashes($_POST["password"]));
$password_codificata=sha1($password);
/* controllo i dati immessi dall'utente */
$controllo=mysql_query("SELECT id_utente FROM tabella_utenti WHERE user='$username' AND pass='$password_codificata'") or die (mysql_error());
$quantiutenti=mysql_num_rows($controllo);
/* se ho un riscontro positivo */
if ($quantiutenti == 1)
{
if ($row=mysql_fetch_array($controllo))
{
$id=$row["id"];
/* salvo le variabili user e id nell'array $_SESSION di PHP */
$_SESSION["username"]=$username;
$_SESSION["id"]=$id;
/* re-indirizzo su loggato.php */
header("location: loggato.php");
}
mysql_free_result($controllo);
}
/* altrimenti mostro un errore */
else
{
echo "
Attenzione: user e pass errati!
";
}
}
?>
La pagina loggato.php conterrà il codice protetto e il re-indirizzamento alla pagina index.php se non esiste la sessione:
session_start();
/* se non è stato effettuato il login, si viene re-indirizzati alla pagina iniziale */
if (!isset($_SESSION["id"]))
{
header("location: index.php");
}
?>
BENVENUTO !
Infine, cliccando su “Effettua il logout”, si viene indirizzati alla pagina logout.php che contiene il seguente codice:
session_start(); // inizializzo la sessione
session_unset(); // svuoto l'array $_SESSION
session_destroy(); // distruggo la sessione
header("location: index.php");
?>
NB: il file dbconnect.php citato in precedenza è il file di connessione al database MySQL:
/* PARAMETRI DI CONNESSIONE AL DATABASE */
$hostDB="localhost";
$userDB="prova";
$passDB="prova";
$nomeDB="prova";
/* CONNESSIONE */
mysql_connect($hostDB,$userDB,$passDB) or die (mysql_error());
mysql_select_db($nomeDB) or die (mysql_error());
?>
link: http://www.swiluppatori.it/php-gestire-login-tramite-le-sessioni-database-mysql/
Commenti
Posta un commento