Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Permessi login php

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19

    Permessi login php

    salve ragazzi,

    ho uno script per la registrazione e autenticazione.adesso volevo gestire gli utenti.ho creato un campo nella tabella utenti chiamata auth_level dove ad 1 corrisponde utente registrato e basta,2 Admin e 3 Utentesuper.

    nel metodo della classe dove verifico il login ho messo anche :
    $_SESSION['auth'] = $row['auth_level'];
    dove prelevo il campo di accesso.

    ho fatto poi una funzione
    public function IsAdmin()
    {


    if($_SESSION['auth'] == 2)
    {
    header("Location :database.php");
    }
    else
    {
    header("Location :index.php");
    }
    }

    e in ogni pagina inserisco :

    <?php
    include 'authentication.class.php';

    $auth = new UserAuthentication();
    $auth->IsAuth();
    $auth->IsAdmin();
    ?>

    non mi funziona.Consigli ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma "non mi funziona" che vuol dire? errori o problemi di logica?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    non funziona.non so se la logica è giusta. vi posto le due funzioni.
    Codice PHP:
            public function VerifyLogin()
            {
                
    $username $_POST['username'];
                
    $password md5($_POST['password']);
                
    $this->DbConnect();
                
    //$sql = "SELECT id FROM utenti WHERE username='$username' AND password='$password' AND ver=1";
                
    $sql "SELECT id,auth_level FROM utenti WHERE username='$username' AND password='$password' AND ver=1";
                
    $res mysql_query($sql,$this->conn);
     
     
     if(
    $row mysql_fetch_array($res))
    {
        
    $_SESSION['auth'] = $row['auth_level']; //prendo l'id del permesso
        
    $_SESSION['user_id'] = $row['id'];
        
    $sql1 "SELECT username FROM utenti WHERE id=$_SESSION[user_id]";
                
    $res1 mysql_query($sql1,$this->conn);
                
    $row1 mysql_fetch_array($res1);
               
    $_SESSION['u'] = $row1['username'];
        
    header("Location: ww.php");
        
    mysql_close($this->conn);
        die;
    }
                else
                {
                    
    header("Location: login.php?alert=1");
                    
    mysql_close($this->conn);
                    die;
                }
            } 
    Codice PHP:
            public function IsAdmin()
    {


       if(
    $_SESSION['auth'] == 2)
        {
            
    header("Location :database.php");
        }
        else
        {
            
    header("Location :index.php");
        }


    Codice PHP:
           <?php 
    include 'authentication.class.php';
     
    $auth = new UserAuthentication();
    $auth->IsAuth();
    $auth->IsAdmin();
     
     

    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    diciamo così... cosa ti aspetteresti e cosa invece "vedi" che succede? non è riconosciuto il login come se non fosse effettuato o cos'altro?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    mi aspetterei che mi rimandasse alla pagina database.php se ad accedere è l'admin che valore = 2.invece ad ogni login vengo riportato alla pagina ww.php che il profilo dell'utente.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il metodo "isAuth" non vedo dov'è definito, nè "VerifyLogin" vedo dov'è usato...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    Codice PHP:
        public function IsAuth()
            {
                if(!isset(
    $_SESSION['auth']))
                {
                    
    header("Location: login.php");
                    die;
                }
            } 
    sono tutti metodi che fanno parte della classe "class UserAuthentication"
    e vengono chiamati in ogni pagina privata.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    un po' come immaginavo... ci può essere un errore nella logica per cui non viene mai raggiunto il redirezionamento voluto... in particolare non metterei mai un redirezionamento così dentro i metodi, secondo me ci vuole un metodo che restituisce l'azione o che ingloba tutti i casi, tipo:

    codice:
    if ($REDIR = $auth->Redir()) {
     header("Location: ".$REDIR); exit;
    };
    oppure direttamente mettendo header dentro il metodo, che cmq si occupa di controllare la tipologia di utente e di scegliere l'url di destinazione (eventualm. richiamando altri metodi privatamente)... cmq a "IsAuth" e agli altri simili farei solo restituire un booleano, tipo:


    Codice PHP:
    public function IsAuth() { 
      return(isset(
    $_SESSION['auth']));


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.