Ciao,
Utilizzo da qualche tempo questo sistema di login multilivello e mi trovo abbastanza bene.
Qual'è la vostra opinione? Qualche consiglio o miglioramento?
Il codice VALIDA.PHP
Codice PHP:
<?php
// Verifica POST e se l'utente o la password sono vuote
if (!empty($_POST) AND (empty($_POST['utente']) OR empty($_POST['password']))) {
header("Location: ../../index.php"); exit;
}
// Connessione al DB
mysql_connect('localhost', 'root', 'password') or trigger_error(mysql_error());
// Connessione al Banco MySQL
mysql_select_db('prova') or trigger_error(mysql_error());
$utente = mysql_real_escape_string($_POST['utente']);
$password = mysql_real_escape_string($_POST['password']);
// Valida
$sql = "SELECT `id`, `nome`, `livello` FROM `utenti` WHERE (`utente` = '". $utente ."') AND (`password` = '". sha1($password) ."') AND (`attivo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Errore
echo "Login invalido!"; exit;
} else {
// Salva i dati nella variabile $risultato
$res = mysql_fetch_assoc($query);
// Se non esiste la sessione la creo
if (!isset($_SESSION)) session_start();
// Salva i dati nella sessione
$_SESSION['UtenteID'] = $res['id'];
$_SESSION['UtenteNome'] = $res['nome'];
$_SESSION['UtenteLivello'] = $res['livello'];
// Redirect
header("Location: ../../staff/Dashboard.php"); exit;
}
?>
E questo il codice che va nelle varie pagine:
Codice PHP:
<?php
// É iniziata la sessione
if (!isset($_SESSION)) session_start();
$livello_necessario = 2;
// Verifica se non c'è la variabile che identifica l'utente
if (!isset($_SESSION['UtenteID']) OR ($_SESSION['UtenteNivel'] < $livello_necessario)) {
// Distruggi la sessione
session_destroy();
// Redirect al login
header("Location: index.php"); exit;
}
?>
<h1>Pagina Ristretta</h1>
Ciao, <?php echo $_SESSION['UtenteNome']; ?>!</p>