sessioni personali

  • Creatore Discussione Creatore Discussione zighy
  • Data di inizio Data di inizio

zighy

Utente Attivo
20 Gen 2012
96
0
0
Ho una pagina di login che apre una sessione, se i dati sono esatti viene richiamata una pagina specifica. Lo script è questo:

PHP:
<?php 

    session_start(); 

    function loginform(){ 
     
        echo "<form action='' method='POST'> 
        Username: <input type='text' name='username'> 
        Password: <input type='text' name='password'> 
        <input type='submit' name='login' value='Login'> 
        </form> 
         
        "; 
    } 
     
    function logoutform(){ 
     
        echo "<form action='' method='POST'> 
         
        <input type='submit' name='Invia' value='Logout'> 
        </form> 
         
        "; 
    } 
     
    
    function login($username, $password){  
    $pass = md5($password);  
    $con = mysql_connect('localhost', 'root', '****') or die (mysql_error());  
    mysql_select_db('my_fantacalciojarno', $con) or die (mysql_error());  
    $result = mysql_query(" SELECT * FROM user WHERE username='$username' AND password='$pass' ") or die (mysql_error);  
    $result_array = mysql_fetch_array($result); 
    $count = mysql_num_rows($result);  
      
    if($count==1){  
    $_SESSION['login']=$username;  
    echo "Login avvenuto";  
    echo"<script type='text/javascript'>"; 
    echo "setTimeout(\"location.href='{$result_array['pagina']}';\", 1000);";   
    echo"</script>"; 
    }  
    else{  
    echo "Login errato. ";  
    }  
    }  
     
    function logout(){ 
    session_destroy(); 
    } 

    if(isset($_POST['login'])){ 
        echo "sei loggato."; 
            logoutform(); 
    } 
    else{ 
    echo "fai il login" ;      
            loginform(); 
    } 
     
    if($_POST['login']){ 
    echo "login in corso.."; 
     
            login($_POST['username'], $_POST['password']); 
    }     
    elseif($_POST['logout']){ 
    echo "Stai facendo il logout "; 
            logout(); 
    } 
         
?>


Ogni utente loggato adesso è nella sua bella paginetta ma volendo avrebbe il ''permesso'' di visitare anche le pagine riservate di altri utenti.
Vorrei fare in modo che questo non accada, magari dando il nome utente alla sessione ma ci sto uscendo pazzo.
Posto anche il codice di controllo sessione:

PHP:
<?php 

session_start(); 

if (!isset($_SESSION['login'])){ 
 exit( "Accesso negato. Devi fare il <a href='login.php'>login<a>."); 
}  

?>
 
Ciao,
il nome della pagina lo hai nel db?
potresti mettere un controllo a inizio pagina dove verifichi che nella tabella la pagina sia associata alla username
Codice:
SELECT username FROM utenti WHERE pagina = 'pagina.php' && username = $_SESSION['username']
oppure metti il nome della pagina in sessione insieme alla user e poi controlli
 
Si la pagina che richiamo è nel database, credo sarebbe meglio mettere il nome della pagina in sessione insieme alla user c ho smanettato un sacco ma c è sempre qualcosa che non va.. quindi ho chiesto aiuto :confused:
 
cosa non va? non riesci a metterla in sessione o non riesci poi a verificarla?
 
A metterla in sessione..intanto..le sessioni sono quanto di meno ho capito nel php
 
nello stesso modo con cui hai messo in sessione l'username
PHP:
if($count==1){  
    $_SESSION['login']= $username;  
    $_SESSION['pagina']= $result_array['pagina'];
 
Basta?Cioè, nella query la "pagina" non la dichiaro tanto c è *. Ma anche il resto del codice dopo aver aperto la sessione rimane invariato o questa sessione pagina va anche su qualche altro rigo??

La verifica la farei cosi:

PHP:
<?php 

session_start(); 

if (!isset($_SESSION['login']) && !isset($_SESSION['pagina'])){
 exit( "Accesso negato. Devi fare il <a href='login.php'>login<a>."); 
}  

?>

Ti ringrazio per l'aiuto
 
dovrebbe bastare cosi, cmq per vedere cosa hai in sessione ti consiglio di mettere nella pagina un bel var_dump()
PHP:
var_dump($_SESSION);
dal risultato a video ti puoi rendere conto se in sessione c'è esattamente quello che ti serve
 
Tutto è come prima, entro e attivo la sessione ma con i permessi di un utente posso tranquillamente vedere anche le pagine degli altri.
 

Discussioni simili