Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766

    Problema col mantenimento di una sessione

    Sto vedendo come funziona un codice trovato in rete per la visione e l'inserimento di news. Dal lato amministratore è previsto un login che consente di accedere all'area modifica. Il problema è che dopo aver inserito username e password avviene sì l'accesso, ma subito dopo la variabile di sessione che fino al passaggio successivo conteneva un valore, si svuota. Non capisco per quale motivo.

    Questo è il file verify.php

    Codice PHP:
    <?php
    session_start
    ();

    //Controllo che la sessione sia attiva
    if(!IsSet($_SESSION['intUserID'])){

        
    //Controllo se l' utente vuole loggarsi
        
    $username = @$_POST['txt_username'];
        
    $password = @$_POST['txt_password'];
        
        
    //Controllo se l' username e la password non sono vuoti
        
    if((!strlen($username) == 0) and (!strlen($password) == 0)){
            
    //Effettuo il controllo dei dati
            
    $strSQL "SELECT * FROM login";
            
    $strSQL .= " WHERE strUser = '".$username."' AND strPass = MD5('".$password."')";
            
    $result mysql_query($strSQL);
            
    $row mysql_fetch_row($result);
            
    //Controllo se l' utente e' stato trovato
            
    if(!strlen($row[0]) == 0){
                
    //Effettuo il login
                
    $_SESSION['intUserID'] = $row[0];
                
    print_r ($_SESSION);
            
            }
            
    //Libero la memoria
            
    mysql_free_result($result);
        }
    }

    if(@
    $_GET['logout'] == 1){ //Effettuo il Logout
        
    $_SESSION = array(); //Desetto tutte le variabili di sessione
        
    session_destroy(); //Distruggo le sessioni
    }
    ?>
    questo invece il file da cui si effettua l'accesso e che in caso di login mostra le aree che possono essere modificate:

    Codice PHP:
    <?php require_once('../includes/db_conn.php');?>
    <?php 
    require_once('../includes/verify.php');?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>
    <head>
        <title>Amministrazione News</title>
    </head>

    <body>

    <?php
    //Controllo che l' utente sia loggato



    echo "la sessione :".$_SESSION['intUserID'];
    print_r ($_SESSION);
    if(IsSet(
    $_SESSION['intUserID']))

    {
        
        
    //Recupero la pagina da visualizzare
        
    $page = @$_GET['page'];
        
        
    //Effettuo lo switch
        
    switch($page)
        {
            
    //*.*.*.*.*.*.*.*.*.*.
            
    case 'amministratore':
                require_once(
    'pages/amministratore.php');
                break;
            
    //*.*.*.*.*.*.*.*.*.*.
            
            //*.*.*.*.*.*.*.*.*.*.
            
    case 'autore':
                require_once(
    'pages/autore.php');
                break;
            
    //*.*.*.*.*.*.*.*.*.*.
            
            //*.*.*.*.*.*.*.*.*.*.
            
    case 'sezione':
                require_once(
    'pages/sezione.php');
                break;
            
    //*.*.*.*.*.*.*.*.*.*.
            
            //*.*.*.*.*.*.*.*.*.*.
            
    case 'articolo':
                require_once(
    'pages/articolo.php');
                break;
            
    //*.*.*.*.*.*.*.*.*.*.
            
            //*.*.*.*.*.*.*.*.*.*.
            
    default:
                require_once(
    'pages/menu.php');
                break;
            
    //*.*.*.*.*.*.*.*.*.*.
        
    }
        
    }else{ 
    //Visualizzo il LOGIN
    ?>
    <table align="center">
        <form method="post" action="index.php">
        <tr height="20">
            <td colspan="2" align="center" bgcolor="#E9E9E9">Login Amministrazione</td>
        </tr>
        <tr>
            <td>Username:</td>
            <td><input type="text" name="txt_username"></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="password" name="txt_password"></td>
        </tr>
        <tr height="20">
            <td colspan="2" align="center"><input type="submit" value="Login"></td>
        </tr>
        </form>
    </table>
    <?php
    }
    ?>

    </body>
    </html>
    Una volta effettuato l'accesso viene visualizzata, all'interno dell'index, la pagina pages/menu.php che consiste in :

    <h1>Amministrazione News</h1>
    <hr/>[*]Cambia Login[*]Gestione Autori[*]Gestione Sezioni[*]Gestione Articoli[*]Log Out

    cliccando su uno qualsiasi di questi link, viene mostrato di nuovo il pannello del login. Ho messo dei print e degli echo per vedere cosa succedeva di questa variabile $_session, ma appena ci si logga con successo, il suo valore diventa 1 mentre subito dopo si svuota e non capisco perchè.

  2. #2
    nella pagina:

    questo invece il file da cui si effettua l'accesso e che in caso di login mostra le aree che possono essere modificate

    Non noto il session_start(); per continuare la sessione

  3. #3
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Ah, quindi andrebbe anche li'? Mi era venuto il dubbio e avevo provato a metterlo sia alla terza riga, dopo i require once, <?php session_start(); ?>, sia dopo il commento "controllo che l'utente sia loggato" ma non era cambiato niente. Ma non ero certa che servisse, pensando che questo benedetto index richiama il verify nell'intestazione il quale ha il session_start.


    edit:
    HO dimenticato di specificare che la pagina col codice più lungo è l'index.php

  4. #4
    session_start() inizia o continua una sessione, mettilo come prima voce della pagina non dovrebbe darti casini in questo modo

  5. #5
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Cavolacci, sono proprio una foca! Seguendo il tuo consiglio l'ho messo nella primissima riga e iin effetti funziona! Grazie!

  6. #6
    devi metterlo in TUTTE le pagine ad accesso con Sessione

  7. #7
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Tutte tutte? Bene, adesso faccio un po' di esperimenti dannosi...

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.