Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema Login

  1. #1

    Problema Login

    Salve a tutti, ho un problema che probabilmente è già stato affrontato quindi nel caso vi prego di reindirizzarmici.
    Il problema è il seguente: una volta effettuato il log-in dalla form che chiede Nick e Pass senza riscontrare problemi, se clicko il tasto indietro del browser ritorno semplicemente alla pagina iniziale, cioè quella con la form di log-in; successivamente se clicko avanti ritorna nella pagina che avevo appena abbandonato e riacquisto i diritti di log-in.
    Di seguito vi presento il codice:

    Form Log-in Utente:
    codice:
    <form name="login" id="login" action="login.php" method="post"> 			
    <div> 
    <label for="nome">Utente</label> 
    
     				
    <input class="bordi_campi_input" type="text" id="nome" name="nome"> 		
    
     				
    <label for="password">Password</label> 
     				
    <input class="bordi_campi_input" type="password" id="password" name="password"> 				
    
    
    
    
    <input type="submit"></div> 		
    </form>
    Login.php
    Codice PHP:
    <?php        
    session_cache_limiter
    ('nocache'); 
    session_start();            
    $user=$_POST['nome'];  
    $pass=$_POST['password'];             
    include(
    "connect.php");  
    $conn=mysql_connect($HOST$USER$PASSWORD); 
    $db_ok=mysql_select_db($DB$conn);  
    $sql="SELECT nickname,pwd,livello FROM utente WHERE nickname='$user' and pwd ='$pass'";      
    $ris=mysql_query($sql);          
    $count=mysql_num_rows($ris);  
    if(
    $count==1){ 
    $nick=mysql_result($ris0"nickname");      
    $passw=mysql_result($ris0"pwd");      
    $livello=mysql_result($ris0"livello");      }      
    mysql_close($conn);            
    if(isset(
    $user$pass)) {            
    if(
    $livello=='Esterno'){      
    header("location:menu_livello_2.php");          
    }                
    if(
    $livello=='Interno'){          
    $_SESSION["sess_var"] = "1";          
    header("location:menu_livello_3.php");              
    }                        
    if(
    $livello=='Amministratore'){              
    header("location:menu_livello_4.php");              
    }      
    else{       
    header("location:menu.html");       
    }      
    }                  
    else {     
    header("location:menu.html");      
    }                        
    ?>
    Menù dopo log-in del livello == Interno
    Codice PHP:
    <?php    
        session_cache_limiter
    ('nocahe');    
        
    session_start();
        
        if (!isset(
    $sess_var)) {
            echo 
    "

    "
    ;
            echo 
    "<div id=\"menu_laterale\"><table align=\"top\" class=\"menu_button\">";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"home.html\" target=\"window\"><img src=\"img/Button/button_home.png\" alt=\"Home\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"prodotti.html\" target=\"window\"><img src=\"img/Button/button_prodotti.png\" alt=\"Prodotti\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"\" target=\"window\"><img src=\"img/Button/button_faq.png\" alt=\"FAQ\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"\" target=\"window\"><img src=\"img/Button/button_malfunzionamenti.png\" alt=\"Messaggi\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"\" target=\"window\"><img src=\"img/Button/button_gestione_prodotti.png\" alt=\"Modifica Prodotti\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"\" target=\"window\"><img src=\"img/Button/button_messaggi.png\" alt=\"Malfunzionamenti\"></a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
                echo 
    "<tr>";
                    echo 
    "<td>";
                        echo 
    "<a  href=\"Logout.php\">Esci</a>";
                    echo 
    "</td>";
                echo 
    "</tr>";
            echo 
    "</table>";
            echo 
    "</div>";
        
            }
            else{
            echo 
    "<h1>Area riservata - accesso negato</h1>";
              die;}
            
            
    ?>
    Come posso risolvere tale problema? Cioè vorrei che tornando indietro da browser perda completamente i diritti di log-in e non possa più tornare avanti.
    Ringrazio quanti mi aiuteranno e quanti perderanno il loro tempo per me .

  2. #2
    questo post ha a che fare con l'altro?

    Diciamo che hai un errore che potrebbe inficiarti il login. Tu setti $_SESSION e poi cerchi $sess_var. Devi cercare $_SESSION["sess_var"].

    Codice PHP:
    $_SESSION["sess_var"] = "1";
    ......   
    // questo e' errato
        
    if (!isset($sess_var)) { 
    Poi dovresti dare un valore ai tre possibili tipi di login Interno-Esterno-Amministratore. Quindi settare 1 o 2 o 3 per distinguere i vari livelli di privilegio.

    Ad ogni pagina riservata ad un dato privilegio controllerai che effettivamente chi vuole entrare abbia settato il corretto valore:

    Codice PHP:
    session_start();
    if(!empty(
    $_SESSION["sess_var"]) AND $_SESSION["sess_var"] = "1") { // o 2 o 3
    ..... 
    poi non utilizzare mysql_result() per richiamare 3 campi del result set ma usa mysql_fetch_assoc(). Il perche'? mysql_result() per prendere tre campi fa tre chiamate al buffer del result set invece mysql_fetch_assoc() ne fa una sola e mette il risultato in un array associativo.

    Ancora: Per fare una associazione a variabile per valori dove la presenza di uno esclude la presenza di altri come sono i valori di $livello meglio usare uno switch tipo if/elseif/else e migliori l'esecuzione del codice.

    questa che poi segue e' proprio fuori luogo.
    Codice PHP:
    if(isset($user$pass)) { 
    Prima passi il POST alla variabile, poi usi la variabile e poi controlli se la variabile e' settata. Direi che il corretto ordine sia:

    1) controlla se $_POST non e' vuoto con empty()
    2) se OK controlla il campo e passalo alla variabile
    3) usa la variabile.

    Ancora un'altra cosa. Il nome delle variabili e' case sensitive Quindi $USER e' diverso da $user, ma per amor di chiarezza molto meglio usare variabili con nome diverso. Tieni anche presente che per convenzione si usa il maiuscolo per le costanti ed il minuscolo per le variabili. Non e' un obbligo ma una convenzione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie mille per la risposta...domani provo a sistemare. Grazie ancora

  4. #4
    ho provato a sistemarla

    Codice PHP:
    <?php      
    session_cache_limiter
    ('nocache');     
    session_start();          
    $user=$_POST['nome'];     
    $pass=$_POST['password'];           
    if(isset(
    $user$pass)) {              
    include(
    "connect.php");     
    $conn=mysql_connect($HOST$USER$PASSWORD);     
    $db_ok=mysql_select_db($DB$conn);     
    $sql="SELECT nickname,pwd,livello FROM utente WHERE nickname='$user' and pwd ='$pass'";     
    $row=mysql_fetch_assoc($ris);        
    $count=mysql_num_rows($ris);     
    if(
    $count==1){          
    $livello=mysql_result($ris0"livello");                  
    if(
    $row["livello"]=='Esterno'){     
    $_SESSION["sess_var"] = "1";     
    header("location:menu_livello_2.php");         }     
    else{         
    if(
    $row["livello"]=='Interno'){         
    $_SESSION["sess_var"] = "2";     
    header("location:menu_livello_3.php");             }         
    else{             
    if(
    $row["livello"]=='Amministratore'){             
    $_SESSION["sess_var"] = "3"
    header("location:menu_livello_4.php");             }             
    else{              
    header("location:menu.html");                  }             
    }         
    }          
     }     
     
    mysql_close($conn);     }               
    else {    
    header("location:menu.html");     }                    
    ?>
    il log-in la fa solo che ho ancora il problema di prima , ovvero tornando indietro da browser voglio che si perda completamente i diritti di log-in e non possa più tornare avanti.

  5. #5
    Prova cosi':

    Codice PHP:
    $sql="SELECT nickname,pwd,livello FROM utente 
          WHERE nickname='
    $user' and pwd ='$pass'";
               
    $count=mysql_num_rows($ris);
        
    if(
    $count == 1){
       
    $row=mysql_fetch_assoc($ris);
       } else { 
               exit(
    "login non corretto";) 
               }

    if(
    $row["livello"] == 'Esterno') {     
        
    $_SESSION["sess_var"] = "2";     
        
    header("location:menu_livello_2.php");
        exit;              
        } elseif(
    $row["livello"]=='Interno') {          
            
    $_SESSION["sess_var"] = "3";     
            
    header("location:menu_livello_3.php");
            exit;             
            } elseif(
    $row["livello"]=='Amministratore'){             
                 
    $_SESSION["sess_var"] = "4"
                 
    header("location:menu_livello_4.php");
                 exit;           
                 } else {            
                         
    header("location:menu.html");
                         exit;
                         } 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    grazie della risposta ... ma il problema continua persistere ... come posso fare per bloccare la pagina ?

  7. #7
    Originariamente inviato da thorpey
    grazie della risposta ... ma il problema continua persistere ... come posso fare per bloccare la pagina ?
    Quale problema?

    Non lo hai spiegato granche' bene. Se un utente si collega e viene autenticato rimarra' autenticato fino alla chiusura del browser oppure ad una specifica cancellazione del file di sessione.

    Le pagine non autorizzate si bloccano verificando le autorizzazioni all'accesso. Se il browser va avanti ed indietro con F5 o freccia indietro, leggera' la sua cache e non ci puoi fare nulla. Fara' tutto sul suo pc.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    ah ok capito ... grazie ancora XD

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.