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>