Salve, ho creato un sito in php, con login,registrazione e un pannello di amministrazione, ora dovrei gestire i livelli cioè che nel pannello di amministrazione possono accedere solamente gli amministratore. ho provato seguendo questa guida, ma non funziona:
http://forum.mrwebmaster.it/php/28827-login-mysql-sessioni-livelli-logout.html
Ho aggiunto un campo di nome livello di tipo enum("A","U") A= Amministratore e U= Utente, poi ho modificato gli utenti già creati e in alcuni gli ho aggiunto la spunta su A.
quando vado sul pannello di amministrazione con un utente non effettua nessun reidirect verso la pagina di errore, vi mostro il codice:
functions.php
fuctionslogin.php
e poi nell'header della pagina di amministrazione ho aggiunto questo:
Vi ringrazio anticipamente
http://forum.mrwebmaster.it/php/28827-login-mysql-sessioni-livelli-logout.html
Ho aggiunto un campo di nome livello di tipo enum("A","U") A= Amministratore e U= Utente, poi ho modificato gli utenti già creati e in alcuni gli ho aggiunto la spunta su A.
quando vado sul pannello di amministrazione con un utente non effettua nessun reidirect verso la pagina di errore, vi mostro il codice:
functions.php
PHP:
<?php
# inclusione del file di configurazione
@include_once 'config.php';
# definizione della classe che conterrà i metodi per la gestione degli iscritti
class Iscrizioni {
# definizione del costruttore
public function __construct()
{
# istanza della classe per la connessione al database
$data = new DATA_Class();
}
# metodo per la registrazione
public function registra($nome_reale, $nome_utente, $password, $email)
{
# cifratura della password
$password = @sha1($password);
# confronto degli input con i dati contenuti in tabella
$query = @mysql_query("SELECT id_utente FROM iscritti WHERE livello = '$livello' nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
# controllo sulla presenza di corrispondenze prodotte dal confronto
$conta = @mysql_num_rows($query);
# se il confronto non genera corrispondenze..
if ($conta == 0)
{
# ..si procede con la registrazione..
$risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
return $risultato;
}else{
# ..altrimenti l'esito della registrazione sarà negativo
return FALSE;
}
}
# metodo per l'autenticazione
public function verifica_login($email_o_nome_utente, $password)
{
# cifratura della password
$password = @sha1($password);
# confronto degli input con i dati contenuti in tabella
$query = @mysql_query("SELECT id_utente FROM iscritti WHERE email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente' and password = '$password'") or die('Errore: ' . mysql_error());
$conta = @mysql_num_rows($query);
$row = @mysql_fetch_assoc($query);
# se il confronto genera una corrispondenza..
if ($conta == 1)
{
# ..viene generata la sessione di login..
$risultato = @mysql_fetch_object($query);
$_SESSION['login'] = true;
$_SESSION['id_utente'] = $risultato->id_utente;
$_SESSION['livello'] = $row['livello'];
return TRUE;
}else{
# ..altrimenti l'esito dell'autenticazione sarà negativo
return FALSE;
}
}
# metodo per la visualizzazione del nome dell'utente loggato
public function mostra_utente($id_utente)
{
# estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
$query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
$risultato = @mysql_fetch_object($query);
# stampa a video del nome reale dell'utente
echo $risultato->nome_reale;
}
# metodo per il controllo sulla sessione
public function verifica_sessione()
{
# il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
if(isset($_SESSION['login']))
{
return $_SESSION['login'];
}else{
return FALSE;
}
}
# metodo per il logout
# la sessione viene distrutta a seguito di uno specifico input dell'utente
public function esci() {
$_SESSION['login'] = FALSE;
@session_destroy();
}
}
?>
fuctionslogin.php
PHP:
<?php
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
@include_once 'functions.php';
# istanza della classe
$obj = new Iscrizioni();
# chiamata al metodo per la verifica della sessione
# chiamata al metodo per l'autenticazione
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$login = $obj->verifica_login(htmlentities($_POST['email_o_nome_utente'], ENT_QUOTES), htmlentities($_POST['password'], ENT_QUOTES));
# controllo sull'esito del metodo
if ($login) {
# redirect in caso di esito positivo
@header("location:index.php");
}else{
# notifica in caso di esito negativo
@header("location:errore.php");
}
}
# controllo sul valore di input per il logout
if (isset($_GET['val']) && ($_GET['val'] == 'fine_sessione'))
{
# chiamata al metodo per il logout
$obj->esci();
# redirezione alla pagina di login
@header("location:index.php");
}
?>
e poi nell'header della pagina di amministrazione ho aggiunto questo:
PHP:
if (isset($_SESSION['livello']) && $_SESSION['livello'] == "U") {
header("location:errore.php");
}
Vi ringrazio anticipamente