Account multilivello

Sileno Perina

Nuovo Utente
1 Lug 2015
2
0
0
27
Castel d'Azzano
Salve a tutti.
Spiego velocemente la mia situazione: ho creato un sito con alcune pagine protette in PHP, servendomi di un database per immagazzinare i dati di autenticazione degli utenti. Premetto che sono piuttosto a digiuno di PHP: infatti ho dovuto seguire delle indicazioni ben precise per creare i file in PHP, ma alla fine sono riuscito nell'"impresa", con risultati abbastanza soddisfacenti. Qui arriva il mio problema: data l'esigenza di dover differenziare tra utente "standard", amministratore e utente con permessi speciali, ho cercato nel forum una soluzione, e in effetti ne ho trovata una (http://forum.mrwebmaster.it/php/28827-login-mysql-sessioni-livelli-logout.html), ma non so come adattare la soluzione di criric al mio sito.
Mi riferisco a questa particolare sezione di codice:

PHP:
<?php
$_SESSION['livello'] = $row['livello'];
?>

Il motivo per cui non riesco a integrare questa parte di codice è molto semplice: a differenza di Davide Rossitto, io ho creato una classe, che viene richiamata da una funzione all'inizio della pagina di login, e non ho la più pallida idea di dove mettere questa riga. Se avessi creato come lui un file login.php molto più semplice, adesso probabilmente avrei una mezza idea di cosa fare, ma ho scelto un'altra strada (anche perché mi sembra migliore, a parer mio).

Per completezza posto il codice della mia classe (ovviamente ho tolto tutti i dati riservati):

PHP:
<?php  
    // error_reporting(E_ALL | E_DEPRECATED | E_STRICT);  
      
    Class Users{  
        /******************************** 
        SETTING 
        *********************************/  
        // le credenziali di accesso al database  
        private $host_db = '';  
        private $user_db = '';  
        private $pass_db = '';  
        private $name_db = '';  
        // gli url che gestiranno le operazioni di login  
        public $Urls = array(  
                            'login_page'    => '',  
                            'register_page' => ',  
                            'logout_page'   => ''  
                            );  
          
 
        /*risorse di connessione*/  
        protected $conn;  
        protected $selezione_db;  
          
        /*variabili di registrazione*/  
        protected $reg_username;  
        protected $reg_email;  
        protected $reg_pass;  
        protected $reg_confirm_pass;  
        protected $reg_crypt_pass;  
          
        /*variabili di login*/  
        protected $login_username;  
        protected $login_password;  
        protected $login_cryptpass;  
        protected $login_iduser;  
          
        /*variabili per gestire gli errori*/  
        public $messages = array(  
                        1 => 'Il campo username &egrave; obbligatorio.',  
                        2 => 'Il campo e-mail &egrave; obbligatorio.',  
                        3 => 'Il campo password &egrave; obbligatorio.',  
                        4 => 'Le due password non coincidono.',  
                        5 => 'Il campo username contiene caratteri non validi. Sono consentiti solo lettere, numeri il i seguenti simboli . _ -.',  
                        6 => 'Inserisci una e-mail con sitassi corretta.',  
                        7 => 'La password scelta &egrave; troppo breve. Scegli una password di almeno 8 caratteri.',  
                        8 => 'Esiste gi&agrave; un utente registrato con questo username.',  
                        9 => 'Esiste gi&agrave; un utente registrato con questa e-mail.',  
                        10 => 'Registrazione avvenuta con successo.',  
                        11 => 'Username e/o password sono errati',  
                        12 => '',  
                        13 => 'Logout eseguito con successo.',  
                        14 => 'Per accedere a questa pagina occorre essere loggati.'  
                        );  
          
        public $message_script;  
          
        // il costruttore attiva la connessione a mysql  
        public function __construct(){  
            $this->connessione();  
            }  
        /****************** 
        CONNESSIONE A MYSQL 
        ******************/  
        protected function connessione(){  
            $this->conn = mysql_connect($this->host_db, $this->user_db, $this->pass_db) or die(mysql_error());  
            $this->selezione_db = mysql_select_db($this->name_db, $this->conn) or die(mysql_error());  
            return TRUE;  
            }  
              
        /************************************* 
        ALCUNI METODI PER ESEGUIRE VALIDAZIONI 
        *************************************/  
          
        // verifica campo generico non vuoto (TRUE se non vuoto)  
        public function empty_string($string){  
            $string = trim($string);  
            if($string==''){  
                return TRUE;  
                }  
            else{  
                return FALSE;  
                }  
            }  
          
        // verifica sintassi username  
        public function is_username($username){  
            $regex = '/^[a-z0-9\.\-_]{3,30}$/i';  
            return preg_match($regex, $username);  
            }  
          
        // verifica sintassi email (TRUE se ok)  
        public function is_email($email){  
            $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/';  
            return preg_match($regex, $email);  
            }  
              
        // verifica sintassi password (per semplicità solo lunghezza) (TRUE se ok)  
        public function is_secure_password($password){  
            if(strlen($password)>=8){  
                return TRUE;  
                }  
            else{  
                return FALSE;  
                }  
            }  
                  
        /***************************************************** 
        METODI PER VERIFICARE ESISTENZA DI USERNAME E PASSWORD 
        ******************************************************/  
          
        // verifica esistenza username (TRUE se esiste)  
        public function isset_username($username){  
            $query = "SELECT COUNT(username) AS count   
                        FROM users   
                        WHERE username='".mysql_real_escape_string($username)."'   
                        LIMIT 1";  
            $result = mysql_query($query) or die(mysql_error());  
            $row = mysql_fetch_array($result);  
            if($row['count']==1){  
                return TRUE;  
                }  
            else{  
                return FALSE;  
                }  
            }  
          
        // verifica esistenza email (TRUE  se esiste)  
        public function isset_email($email){  
            $query = "SELECT COUNT(email) AS count   
                        FROM users   
                        WHERE email='".mysql_real_escape_string($email)."'   
                        LIMIT 1";  
            $result = mysql_query($query) or die(mysql_error());  
            $row = mysql_fetch_array($result);  
            if($row['count']==1){  
                return TRUE;  
                }  
            else{  
                return FALSE;  
                }  
            }  
          
        /****************************** 
        I FORM DI LOGIN E REGISTRAZIONE 
        ******************************/  
        public function get_login_form(){  
            $html = '  
                <form action="' .$this->Urls['login_page']. '" method="post"> 
                <center> 
                <input type="text" name="username" id="field" placeholder="Username" /><br><br> 
                <input type="password" name="pass" id="field" placeholder="Password" /><br><br>
                <input type="submit" name="login" value="Accedi" id="accedi"/>&nbsp;
                <input type="reset" name="reset" value="Reimposta campi" id="accedi"/><br>
				<a href="index.php"><button type="button" name="home" id="home"/>Torna alla home</button></a>
				</center>
                </form>';  
            return $html;  
            }  
          
        public function get_register_form(){  
            $html = '  
                <form action="' .$this->Urls['register_page']. '" method="post">  
                <center>   
                 <input type="text" name="username" id="field" placeholder="Username" /><br><br>
                 <input type="text" name="email" id="field" placeholder="E-mail" /><br><br>
                 <input type="password" name="pass1" id="field" placeholder="Password" /><br><br>   
                 <input type="password" name="pass2" id="field" placeholder="Ripeti password" /><br><br>  
                 <input type="submit" name="register" value="Registrati" id="accedi" />&nbsp;  
                 <input type="reset" name="reset" value="Reimposta campi" id="accedi" />  
                 </center>  
                 </form>';  
            return $html;  
            }  
          
        /***************************** 
        LINK LOGOUT 
        *****************************/  
        public function get_link_logout(){  
            if($this->is_logged()){  
                return '<a href="'.$this->Urls['logout_page'].'" id="logout">Logout</a>';  
                }  
            return '';  
            }  
              
        /******************************* 
        METODO PER CRIPTARE LE PASSWORD 
        *******************************/  
        public function crypt_pass($pass){  
            return sha1($pass);  
            }  
          
        /***************************** 
        ESECUZIONE DELLA REGISTRAZIONE 
        ******************************/  
        public function esegui_registrazione(){  
            // se il form e i suoi input sono stati inviati  
            if(isset($_POST['register']) AND   
                isset($_POST['username']) AND   
                isset($_POST['email']) AND   
                isset($_POST['pass1']) AND   
                isset($_POST['pass2'])){   
                //valorizziamo alcune variabili  
                $this->reg_username = trim($_POST['username']);  
                $this->reg_email = trim($_POST['email']);  
                $this->reg_pass = trim($_POST['pass1']);  
                $this->reg_confirm_pass = trim($_POST['pass2']);  
                // criptiamo la password  
                $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass);  
                // eseguiamo la validazione degli input  
                $valid_input = $this->check_input_registrazione();  
                // se sono validi  
                if($valid_input===TRUE){  
                    // inseriemo all'interno del database i dati  
                    $this->query_insert_registrazione();  
                    // settiamo il messaggio di successo della registrazione  
                    $this->message_script = 10;  
                    return TRUE;  
                    }  
                }  
            return FALSE;  
            }  
          
        // verifica che gli input siano corretti  
        protected function check_input_registrazione(){  
            if($this->empty_string($this->reg_username)){  
                $this->message_script = 1;  
                return FALSE;  
                }  
            else if($this->empty_string($this->reg_email)){  
                $this->message_script = 2;  
                return FALSE;  
                }  
            else if($this->empty_string($this->reg_pass)){  
                $this->message_script = 3;  
                return FALSE;  
                }  
            else if($this->reg_pass != $this->reg_confirm_pass){  
                $this->message_script = 4;  
                return FALSE;  
                }  
            else if(!$this->is_username($this->reg_username)){  
                $this->message_script = 5;  
                return FALSE;  
                }  
            else if(!$this->is_email($this->reg_email)){  
                $this->message_script = 6;  
                return FALSE;  
                }  
            else if(!$this->is_secure_password($this->reg_pass)){  
                $this->message_script = 7;  
                return FALSE;  
                }  
            else if($this->isset_username($this->reg_username)==TRUE){  
                $this->message_script = 8;  
                return FALSE;  
                }  
            else if($this->isset_email($this->reg_email)==TRUE){  
                $this->message_script = 9;  
                return FALSE;  
                }  
            return TRUE;  
            }  
          
        // esecuzione della query insert di registrazione  
        protected function query_insert_registrazione(){  
            $query = "  
                        INSERT INTO users   
                        SET   
                            username='".mysql_real_escape_string($this->reg_username)."',   
                            pass='".mysql_real_escape_string($this->reg_crypt_pass)."',   
                            email='".mysql_real_escape_string($this->reg_email)."',   
                            data_reg= NOW()";  
            $result = mysql_query($query) or die(mysql_error());  
            return mysql_insert_id();  
            }  
              
        /******************* 
        ESECUZIONE DEL LOGIN 
        ********************/  
        public function esegui_login(){  
            // se il form di login e i sui tutti input sono stati inviati   
            if(isset($_POST['login']) AND isset($_POST['username']) AND isset($_POST['pass'])){  
                // valorizziamo delle variabili  
                $this->login_username = trim($_POST['username']);  
                $this->login_password = trim($_POST['pass']);  
                // criptiamo la password  
                $this->login_cryptpass = $this->crypt_pass($this->login_password);  
                // validiamo i dati (non devono essere vuoti)  
                $not_empty_input = $this->check_input_login();  
                // se la validazione &egrave; andata a buon fine  
                if($not_empty_input===TRUE){  
                    // eseguiamo la query e verifichiamo se individua le credenziali  
                    if($this->query_select_login()==TRUE){  
                        // settiamo lo status di utente loggato  
                        $this->set_logged($this->login_iduser);  
                        // settiamo l'username  
                        $this->set_username($this->login_username);  
                        // settiamo il messaggio di successo del login  
                        $this->message_script = 12;  
                        return TRUE;  
                        }  
                    // se la query non ha trovat utenti con quelle credenziali  
                    else{  
                        //  settiamo un messaggio di insuccesso dell'operazone  
                        $this->message_script = 11;  
                        }  
                    }  
                }  
            return FALSE;  
            }  
          
        // verifica che gli input del login non siano vuoti  
        protected function check_input_login(){  
            if($this->empty_string($this->login_username)){  
                $this->message_script = 1;  
                return FALSE;  
                }  
            else if($this->empty_string($this->login_password)){  
                $this->message_script = 3;  
                return FALSE;  
                }  
            return TRUE;  
            }  
          
        // esecuzione della qeury per verificare il login  
        protected function query_select_login(){  
            $query = "  
                        SELECT id FROM users   
                        WHERE   
                            username='".mysql_real_escape_string($this->login_username)."' AND   
                            pass='".mysql_real_escape_string($this->login_cryptpass)."'";  
            $result = mysql_query($query) or die(mysql_error());  
            // se individua l'utente  
            if(mysql_num_rows($result)==1){  
                $row = mysql_fetch_array($result);  
                $this->login_iduser = $row['id'];
				/* livelli */
                return TRUE;  
                }  
            return FALSE;  
            }  
              
        /*********************************** 
        VERIFICA DELLO STATO DI LOGIN UTENTE 
        ***********************************/  
          
        // verifica login  
        public function is_logged(){  
            return isset($_SESSION['auth']);  
            }  
          
        // set login  
        protected function set_logged($id_user){  
            $_SESSION['auth'] = $id_user;  
            return;  
            }  
          
        // access denied  
        public function access_denied(){  
            if(!$this->is_logged()){  
                header("location: ".$this->Urls['login_page']."?message=14");  
                exit;  
                }  
            return;  
            }  
      
        protected function set_username($username){  
            $_SESSION['username_logged'] = $username;  
            return;  
            }  
          
        public function get_username(){  
            return isset($_SESSION['username_logged']) ? $_SESSION['username_logged'] : '';  
            }     
              
        // logout  
        public function logout(){  
            session_unset();  
            session_destroy();  
            setcookie(session_name(), '', time()-42000, '/');  
            header("location: ".$this->Urls['login_page']."?message=13");  
            return;  
            }  
      
        /***************************** 
        METODO PER OTTENERE I MESSAGGI 
        ******************************/  
        public function get_message(){  
            if(isset($_GET['message'])){  
                $this->message_script = $_GET['message'];  
                }  
            $key = intval($this->message_script);  
            if(array_key_exists($key, $this->messages)){  
                return $this->messages[$key];  
                }  
            return FALSE;  
            }  
        }  
    ?>

Ringrazio in anticipo chi mi saprà aiutare!
 
Discussioni simili
Autore Titolo Forum Risposte Data
N CERCO ACCOUNT INSA Annunci servizi di Social Media Marketing 0
L vendo ACCOUNT FACEBOOK FARMATI BM, MARKETPLACE, SEMPLICI! Presentati al Forum 1
R È possibile ricevere avvisi di accesso da Google su un solo telefono senza disconnettersi dall'account? Discussioni Varie 0
A differenza tra account email e ISP presenti in blacklist Posta Elettronica 0
Max 1 Account GMAIL Posta Elettronica 6
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
K Importazione e-mail da account gmail ad un altro account gmail Posta Elettronica 0
I problema con 2 account Posta Elettronica 1
C Associare biglietti numerici ad un account numerico PHP 0
R [C#] Fare varie operazioni nel proprio account Facebook .NET Framework 0
maxbossi Importante Vietata la vendita di ACCOUNT e PROFILI Annunci servizi di Social Media Marketing 0
E COMPRO ACCOUNT INSTAGRAM Compravendita siti e domini 1
G COMPRO ACCOUNT INSTAGRAM Compravendita siti e domini 2
E [ACQUISTO] Account Instagram 5 / 10k Compravendita siti e domini 0
G mettere account posta in Microsoft outlook 2016 di gmail Posta Elettronica 0
C Compro account instagram da 1k in su Compravendita siti e domini 7
D [VENDO]Account Steam 27 giochi 100/120€ Altri Annunci 0
A [VENDO] Pubblicità su account IG da 95k Follower. Vendere e Acquistare pubblicita' online 3
C ACCOUNT FACEBOOK AUSTRIACO Compravendita siti e domini 0
L Dubbi su un account instagram da comprare Discussioni Varie 0
M [VENDO] Account Steam con 40 giochi Altri Annunci 0
V Vendo account Instagram 65k Discussioni Varie 0
C Cerco account Instagram con almeno 40mila followers Altri Annunci 1
G [CERCO] Account Instagram informatica Annunci servizi di Social Media Marketing 0
Peppe94 Vendo Pagine Facebook & Account Instagram Annunci servizi di Social Media Marketing 2
T Vendo Account Instagram Compravendita siti e domini 0
I Compro account instagram Annunci servizi di Social Media Marketing 0
ʟᴜᴋᴇ ɢʟᴀɴᴛᴏɴ Account Privati e Metodi Netflix, Spotify, Dazn DE, Infinity, NowTV, VPN, SMS e tanto altro... Altri Annunci 2
L Cerco account skygo Altri Annunci 0
S Cerco Account instagram almeno 10k Italiani Annunci servizi di Social Media Marketing 0
B Problema Instagram: Blocco Account Discussioni Varie 0
S [COMPRO] account instagram minimo 10k followers Annunci servizi di Social Media Marketing 0
D Cerco account Facebook Nuovi Annunci servizi di Social Media Marketing 0
Z Vendo Like, Followers e Account Instagram Altri Annunci 0
K [COMPRO] cerco account instagram !! Compravendita siti e domini 1
R ACCOUNT INSTANGRAM 510 MILA FOLLOWER Annunci servizi di Social Media Marketing 0
A Account Instagram 13.9k followers Annunci servizi di Social Media Marketing 1
K VENDO account Instagram 10-80k Annunci servizi di Social Media Marketing 1
V [COMPRO] Cerco account Instagram per uso personale. Annunci servizi di Social Media Marketing 2
S [compro] account facebook Annunci servizi di Social Media Marketing 1
S [COMPRO] Account Instagram Italiani Annunci servizi di Social Media Marketing 4
M [PHP] Modifica account PHP 3
G Cerco account instagram tutti italiani Annunci servizi di Social Media Marketing 0
S Compro account facebook Annunci servizi di Social Media Marketing 0
Z Acquisto account instagram target tech da 30k in su Annunci servizi di Social Media Marketing 1
D CERCO ACCOUNT INSTAGRAM MINIMO 20k Annunci servizi di Social Media Marketing 1
K vendo account youtube da 11k iscritti Annunci servizi di Social Media Marketing 3
S [COMPRO] Account Instagram Annunci servizi di Social Media Marketing 2
F Compro account instagram Compravendita siti e domini 0
G compro account Instagram orologi 25/30 k followers italiani e reali Compravendita siti e domini 0

Discussioni simili