Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [php]Problema sessioni

  1. #1

    [php]Problema sessioni

    Buon ferragosto (sotto la pioggio nel mio caso...) a tutti! Volevo chiedervi una cosa riguardo le sessioni in php. Sulla pagina che riceve il login del mio sito c'è questo codice qua:

    //salva i valori ricevuti da index.php sulle variabili di sessione
    $HTTP_SESSION_VARS['username'] = $username;
    $HTTP_SESSION_VARS['password'] = $password;

    Nelle altre pagine dell'area riservata c'è, invece, questo codice qua:

    //recupera i dati della sessione
    $username=$HTTP_SESSION_VARS['username'];
    $password=$HTTP_SESSION_VARS['password'];

    Con questo codice sovrei recuperare l'username dell'utente, ma invece non lo fa perchè le variabili di sessioni risultano vuote. Perchè???
    Qualcuno sa aiutarmi?

  2. #2
    prova a sostituire
    $HTTP_SESSION_VARS => $_SESSION
    e ad userame e password i rispettivi valori nell array $_POST

  3. #3
    Grazie ellecubo. Cmq sostituendo $HTTP_SESSION_VARS con $_SESSION, non cambia niente perchè non vengono salvati i valori che dò loro in pasto. E per quanti riguarda l'array $_POST, l'ho già usato per assegnare i valori che ricevo da login.php a $username e $password che poi sono assegnati, a loro volta, a $HTTP_SESSION_VARS['username'] o $_SESSION['username'] e $HTTP_SESSION_VARS['password'] o $_SESSION['password']. Ma non cambia assolutamente niente.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    La sessione deve essere aperta con session_start() altrimenti non hai il salvataggio/recupero dei dati.

  5. #5
    La sessione l'ho avviata prima di fare tutto proprio con session_start(); e dopo su logout.php la distruggo con session_destroy();
    Ma session_start() lo devo mettere solo sulla prima pagina che riceve i dati e li salva su $HTTP_SESSION_VARS, giusto? Non anche su tutte le altre pagine, altrimenti avvierei 100000 sessioni e non mi sembra giusto..

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da Nick083
    La sessione l'ho avviata prima di fare tutto proprio con session_start(); e dopo su logout.php la distruggo con session_destroy();
    Ma session_start() lo devo mettere solo sulla prima pagina che riceve i dati e li salva su $HTTP_SESSION_VARS, giusto? Non anche su tutte le altre pagine, altrimenti avvierei 100000 sessioni e non mi sembra giusto..
    Come ti ho detto prima. La sessione la devi aprire se vuoi esserne membro e leggere la variabile $_SESSION. Non ne apri una nuova, recuperi la stessa a meno che tu non chiuda il browser o scatti il time out di inattività.

    Quindi session_start() deve esserci in tutte le pagine che vuoi possano utilizzare $_SESSION valorizzato dallo stesso user.

  7. #7
    per farvi capire meglio vi do anche il codice della pagina che riceve i dati da login.php :
    <?php
    $myconn = mysql_connect('localhost', 'xxx', 'yyy') //Mi connetto al MySql Server
    or die('Connessione non riuscita: ' . mysql_error());

    mysql_select_db('my_xxx', $myconn) or die('Selezione database fallita!');

    //
    //Controlliamo se tutti i campi sono compilati
    //

    if($username == "" || $password == "" ) //Se alcuni campi non sono compilati...
    {
    die("Alcuni campi non sono compilati"); //...terminiamo lo script e mandiamo un errore all'utente
    }

    //
    //Recuperiamo i dati dal database e li controlliamo
    //

    $query = "SELECT * FROM utenti WHERE user = '$username'"; //Impostiamo la query...
    $risultato = mysql_query($query) //...e la eseguiamo
    or die("Impossibile eseguire query.
    ".mysql_error()); //Oppure mandiamo il solito errore
    $riga = mysql_fetch_array($risultato); //Fissiamo la riga

    if(mysql_num_rows($risultato) == 0 || $riga['password']!=$password) //Se l'username o la password sono sbagliati...
    die("Username e/o password errati"); //..mandiamo l'errore e terminiamo lo script
    else //Altrimenti...
    {
    session_start(); //..avviamo la sessione...

    $HTTP_SESSION['username'] = $username; //...e salviamo i dati in essa
    $_SESSION['password'] = $password;
    //$HTTP_SESSION_VARS['password'] = $password;
    }
    ?>

    E questo invece è il codice per tutte le altre pagine all'interno dell'area riservata:

    <?php
    $myconn = mysql_connect('localhost', 'xxx', 'yyy') //Mi connetto al MySql Server
    or die('Connessione non riuscita: ' . mysql_error());

    mysql_select_db('my_fxxx', $myconn) or die('Selezione database fallita!'); //Mi connetto al database fantabumba //
    //Otteniamo i dati
    //

    $username = $HTTP_SESSION_VARS['username']; //Otteniamo l'username
    $password = $HTTP_SESSION_VARS['password']; //Otteniamo la password
    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Devi mettere session_start(). credevo fosse ormai chiaro.

    <?php
    session_start(),

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.