Login con livelli

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
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
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
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Modifica questa riga:
PHP:
$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());
Così:
PHP:
$query = @mysql_query("SELECT id_utente, livello FROM iscritti WHERE email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente' and password = '$password'") or die('Errore: ' . mysql_error());
Inoltre ti consiglio, per sicurezza, di modificare questa riga:
PHP:
if (isset($_SESSION['livello']) && $_SESSION['livello'] == "U") {
Così:
PHP:
if (isset($_SESSION['livello']) && $_SESSION['livello'] != 'A') {
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Problemi con il login PHP 2
A Problema login con Safari PHP 14
L login con solo un codice PHP 3
M Effettuare Login con dati Json Sviluppo app per Android 0
L [PHP] login con password_verify PHP 3
L [PHP] login con varie entrate PHP 3
L [PHP] login con password_verify - password_hash PHP 5
M [PHP] Problemi con il riconoscimento login. PHP 21
F Problema con pagine login in PHP PHP 2
M [PHP] Problemi con login facebook PHP 0
L [PHP] login e protezione pagine con session PHP 3
L [PHP] login con la classe medoo.in PHP 5
I [PHP] login con sessione singola PHP 1
D [PHP] Login Multiutente con pagina privata PHP 5
Fuego2806 [Joomla] Problema di login con il nuovo template Joomla 0
S [PHP] Problemi con Login e pagina Utente PHP 5
webmachine [PHP] Problemi con Login e pagina Utente PHP 3
F Problemi login con lo script php PHP 2
A Area riservata con login e mysql ma nn mi logga PHP 1
C Login con username con accento tipo "Canicattì" PHP 5
F file_get_contents e pagine con login PHP 4
M Script php login con password in scadeza ogni tre mesi PHP 2
D Login con sessioni per 2 pagine diverse PHP 2
L login con codice fiscale PHP 4
filomeni Due Login con stessa password PHP 1
S login con pagine tutte personalizzate dall' utente loggato PHP 3
S problema con ajax semplice login script Javascript 8
D aiuto con pag di login in php PHP 1
F login con certificato digitale PHP 1
L problema login con variabili PHP 7
S Problema con login e cookie PHP 5
L pdo con login PHP 2
L login con pdo/mysql PHP 2
F Login con Facebook Javascript 0
L login semplice con array PHP 10
S Plugin login/ registrazione Wordpress con area download privata WordPress 3
S Problema di login con PDO PHP 2
M Login con php PHP 2
P Login con data e ora PHP 34
M login con indirizzo a pagine diverse PHP 10
P Problema con login e password PHP 54
L Problema con login in Dreamweaver CS5 PHP 2
I Integrazione login con portale esterno al blog WordPress 1
E [PHP + MySql] Sito con login e sessioni PHP 8
A Script login con pagina utente PHP 9
asevenx login con registrazione e cookie che salva i dati con sistema "ricordami" PHP 3
S script login con funzione "ricordami" tramite cookie..... PHP 12
max_400 Proteggere login con autenticazione database PHP 19
L [PHP/MYSQL] Login con ricordo utente PHP 1
S Area riservata con login e mysql PHP 20

Discussioni simili