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.phploggato.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!
";
}
}
?>
Username:
Password:

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

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)