Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Area login

  1. #1

    Area login

    Ho appena realizzato un piccolo form di login per un'area di amministrazione, e vorrei sentire i vostri pareri,consigli o qualsiasi altra cosa che abbiate da chiedermi o dirmi;
    lo username e la password vengono confrontati con i valori salvati in un database e se sono corretti registro i dati dell'utente che si è loggato(username,ip,ora login,ora logout).
    Ecco il codice:

    LOGIN.CLASS.PHP
    Codice PHP:
    <?php

    class loginClass{
        
        private 
    $key 's6ufnNBBYJD=)/bndwudbacv$gwsnNUJufSAxwq02Ngf4%Wh!';
                                                                             
        public function 
    isConnected(){
            return (isset(
    $_SESSION['logged']) === true) ?  true :  false;
        }
        
        public function 
    login($user$pass){
            
    $hashPass PMA_blowfish_encrypt($pass$key);
            
    $sql "SELECT id FROM users WHERE username='".$user."' AND password='".$hashPass."'";
            
    $result mysql_query($sql);
            
    $row mysql_num_rows($result);
            if(
    $row == '1')
            {
                
    $verifyStore $this->storeLog($user,'LogIn');
                if(
    $verifyStore === true
                {
                    
    $_SESSION['logged'] = PMA_blowfish_encrypt("SESSION+VERIFIED"$this->key);
                    return 
    true;
                }
                else
                    return 
    false;            
            }
            else     
                return 
    false;
            
        }
        
        public function 
    logout(){
            
            
    $this->storeLog('','LogOut');
            unset(
    $_SESSION['logged'],$_SESSION['idSession']);
            
    session_destroy();        
        }
        
        private function 
    storeLog($user,$action){
            
            
    $CurrentTime date('c');
            
            if(
    $action == 'LogIn')
            {    

                
    $ip=$_SERVER['REMOTE_ADDR'];
                            
                
    $sql="INSERT INTO SiteAccess (id,user,ip,login_time,logout_time) VALUES('','".$user."','".$ip."','".$CurrentTime."','')";
                
    $result=mysql_query($sql);
                if(
    $result === true
                {
                    
    $idSession mysql_insert_id();
                    
    $_SESSION['idSession'] = PMA_blowfish_encrypt($idSession$this->key);
                    return 
    true;
                }
                else
                    return 
    false;
            }
            elseif(
    $action == 'LogOut')
            {
                
    $idSession=PMA_blowfish_decrypt($_SESSION['idSession'], $this->key);
                
    $sql="UPDATE SiteAccess SET logout_time='".$CurrentTime."' WHERE id='".$idSession."'";
                
    mysql_query($sql);
            }
            else     
                return 
    false;
        }

    }
    LOGIN.PHP
    Codice PHP:
    <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <head>
    <?php session_start();?>
    <?php 
    require_once 'PhpClass/connection.Class.php'?>
    <?php 
    require_once 'PhpClass/crypt.Class.php'?>
    <?php 
    require_once 'PhpClass/login.Class.php'?>
    </head>
    <html>
        <body>
        <?php 
                
            $log 
    = new loginClass();
            
            
    $verifyUserConn $log->isConnected();
            
            if(
    $verifyUserConn === true)
                
    header("Location: Pages/intro.php");
            else
            {
                if(isset(
    $_POST['uname']) && isset($_POST['passw']))
                {        
                    
    $filteredUser mysql_real_escape_string($_POST['uname']);
                    
    $filteredPass mysql_real_escape_string($_POST['passw']);
                    
    $connection = new connect();
                    
    $connection->connessioneMysql('root''''localhost''administration');    
                    
    $verifyLogin $log->login($filteredUser$filteredPass);
                    if(
    $verifyLogin === true)
                        
    header("Location: Pages/intro.php");
                    else
                        
    header("Location: ".$_SERVER['PHP_SELF']);
                }
                else 
                {                    
        
    ?>
            Inserire username e password
            <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
                Username<input type="text" name="uname">

                Password<input type="password" name="passw">

                <button type="submit">invia</button>
            </form>
        <?php 
                
    }
            }            
        
    ?>
        </body>
    </html>
    Poi volevo chiedere se qualcuno avesse mai usato $_SERVER['PHP_AUTH_USER'] per le autenticazioni.
    Grazie in anticipo per tutte le eventuali risposte

  2. #2
    Nessuno?

  3. #3
    Ciao, ti dico le mie impressioni

    ci vuole una classe per il database, il metodo isConnected lo cambierei almeno in isLogged ma comunque lo vedo meglio associato ad un'ipotetica classe "account", alcuni passaggi si possono ottimizzare

    dipende dove vuoi arrivare..
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Per classe del database intendi una classe che si occupi di svolgere le query?
    La classe "account " per cosa la dovrei utilizzare? Sto cercando di inserire tutti i metodi utilizzati, in un determinato modulo, in una sola classe, in maniera da creare moduli indipendenti con il minor numero di classi possibile; nella classe login avrò solo i metodi utilizzati nel modulo di login, così se dovrò riutilizzarlo, mi basterà includere la classe login e il form html.
    Che passaggi si possono ttimizzare secondo te?
    Intanto grazie

  5. #5
    Originariamente inviato da addictedToPhp
    Per classe del database intendi una classe che si occupi di svolgere le query?
    si pressapoco.. considera che io ho sia una classe per il database che varie classi per i vari tipi di query e ancora varie classi per le varie opzioni, limiti, join, where ect ect


    La classe "account " per cosa la dovrei utilizzare?
    non è detto che ti serva.. ma un metodo "isLogged" lo vedo meglio abbinato ad una classe account o user che non sulla classe login..

    Sto cercando di inserire tutti i metodi utilizzati, in un determinato modulo, in una sola classe, in maniera da creare moduli indipendenti con il minor numero di classi possibile; nella classe login avrò solo i metodi utilizzati nel modulo di login, così se dovrò riutilizzarlo, mi basterà includere la classe login e il form html.
    corretto ma considera che ci sono molti modi di vedere la questione.. anche io sto sviluppando un'applicazione modulare ed ho usato una mia logica.. tu come prevedi di affrontare il problema? hai un piano d'azione?

    Che passaggi si possono ttimizzare secondo te?
    Intanto grazie
    devi decidere come vuoi portare avanti il progetto, se pensi di lavorare solo di OOP allora inizia a scrivere classi a profusione, es. classe di validazione dati, classe database, classe user, classe login........ sessioni, tags...
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    All'inizio avevo pensato anche io ad una classe per il database, ma per il momento ho deciso di gestire la cosa senza, anche perchè non ci sono query particolarmente complicate da eseguire (i classici INSERT,SELECT,UPDATE,DELETE ). Per curiosità te come hai strutturato la gestione delle query con classi?
    Il mio piano d'azione è di sviluppare a moduli indipendenti; tu cosa intendi per piano d'azione?

  7. #7
    Originariamente inviato da addictedToPhp
    All'inizio avevo pensato anche io ad una classe per il database, ma per il momento ho deciso di gestire la cosa senza, anche perchè non ci sono query particolarmente complicate da eseguire (i classici INSERT,SELECT,UPDATE,DELETE ). Per curiosità te come hai strutturato la gestione delle query con classi?
    Il mio piano d'azione è di sviluppare a moduli indipendenti; tu cosa intendi per piano d'azione?
    faccio prima a mostrartelo che a spiegartelo.. è sicuramente migliorabile ma per ora va egregiamente per me.. se trovi/trovate errori di concetto fatemelo sapere

    ogni box è una classe ed all'interno ci sono le proprieta ed i metodi..

    se voglio vedere un dato sul db faccio:
    Codice PHP:
    $dv = new dataViewer();
    $dato $dv->view'user''id' );

    // oppure filtro
    $dato $dv->view'user''id'$where ); 
    dipende sempre quanto complesso diventa il progetto..

    Questa volta, più che un voto.. è favoreggiamento.

  8. #8
    Indubbiamente una cosa molto utile e ben fatta, ma per adesso posso farne a meno.
    Avevo intenzione di cominciare a codare qualcosa appena finito questo progetto
    Ritorno a una domanda che avevo fatto all'inizio: tu hai mai usato $_SERVER['PHP_AUTH_USER'] per le autenticazioni?

  9. #9
    Originariamente inviato da addictedToPhp
    Indubbiamente una cosa molto utile e ben fatta, ma per adesso posso farne a meno.
    Avevo intenzione di cominciare a codare qualcosa appena finito questo progetto
    Ritorno a una domanda che avevo fatto all'inizio: tu hai mai usato $_SERVER['PHP_AUTH_USER'] per le autenticazioni?
    no mai usato...
    Questa volta, più che un voto.. è favoreggiamento.

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.