Ciao,
per i livelli devi avere un campo nella tabella USER con indicato il livello
puoi definire il campo INT 1 e mettere o 0 o 1 o 2 etc se pensi di fare piu di 10 livelli metti INT 2
oppure puoi usare ENUM e definirli "A","U","S"
come preferisci
poi lo devi estrarre quando fai il login e lo metti in sessione
PHP:
<?php
$result = mysql_query("SELECT * FROM USER WHERE username='$username' AND password='$pass'") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$_SESSION['livello'] = $row['livello'];
?>
avendo il livello in sessione ci puoi fare quello che vuoi
PHP:
<?php
// puoi reindirizzare in base al livello
if (isset($_SESSION['livello']) && $_SESSION['livello'] == "A") {
header("location:pagina_per_il_livello_A.php");
}
// oppure
echo "Questa la vedono tutti";
if (isset($_SESSION['livello']) && $_SESSION['livello'] == "A") {
echo "Questa la vede solo il livello A";
}
echo "Anche questa la vedranno tutti";
?>
per aggiungere qualche funzione in piu a quello che hai gia fatto
potresti creare una tabella nel db dove memorizzare la sessione, subito dopo averla valorizzata
PHP:
<?php
//....
$count = mysql_num_rows($result);
if ($count == 1) {
$row = mysql_fetch_assoc($result);
$_SESSION['livello'] = $row['livello'];
$_SESSION['login'] = $row['username'];
// tabella username e data
$q = "INSERT INTO SESSIONI SET username='$username',
data = NOW()";
$res = mysql_query($q);
echo("Login avvenuto");
// potresti reindirizzare alla pagina protetta al posto di echo ma senza stampare niente altro prima
// header("location:paginaprivata.php");
}
//......
?>
poi puoi aggiungere una funzone di controllo che richiamerai in ogni pagina
PHP:
<?php
function autenticazione() {
require("config.php");
mysql_select_db("aretusaw_portale");
// verifichi che l'utente sia in sessioni da meno di 20 minuti
$query = "SELECT * FROM SESSIONI
WHERE username = " . $_SESSION['login'] . " &&
TIMESTAMPDIFF(MINUTE, data, NOW()) < 20";
$res = mysql_query($query);
if (mysql_num_rows($res) == 0) {
// ripulisci le sessioni
unset($_SESSION);
// restituisci falso e esci
return false;
}
// altrimenti
// aggiorni la data di sessione dell'utente loggato
$query = "UPDATE SESSIONI SET data = NOW()
WHERE username = " . $_SESSION['login'] . "";
$res = mysql_query($query);
// elimini le sessioni piu vecchie di 20 minuti
$query = "DELETE FROM SESSIONI
WHERE TIMESTAMPDIFF(MINUTE, data, NOW()) > 20";
$res = mysql_query($query);
// restituisci vero
// dovrai semmai eliminare il record anche nella funzione logout se lo fanno manualmente
return true;
}
?>
La tua index diventera cosi:
PHP:
<?php
session_start();
// richiami il file delle funzioni
require_once 'login.php';
// richiami e verifichi la funzione autenticazione
if (!autenticazione()) {
exit("Accesso Negato. Per leggere questa pagina e' necessario fare il <a href='login.php'>login<a>");
}
echo("Pagina riservata. Contenuti riservati.");
?>
in questo modo puoi anche
contare quanti utenti loggati ci sono online con SELECT count(*) FROM SESSIONI
Ho scritto senza testare tienine conto