Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Problemi sessioni

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    22

    Problemi sessioni

    Sto gestendo un sistema di prenotazione che raccoglie informazioni pagina per pagina e li memorizza nella variabile $_SESSION per poi recuperare i dati alla fine e mostrare l'ammontare totale del pagamento. Per prenotare è necessario registrarsi e perciò ogni pagina controlla un flag nell'array $_SESSION per controllare se il login è stato effettuato.

    A un certo punto c'è una pagina che riempie con parecchie informazioni l'array $_SESSION, tra cui c'anche l'assegnazione:

    $_SESSION['totale_resume_1']=$totale_calcolato;

    che si trova esattamente alla fine del codice php della pagina.

    Due pagine più avanti, cercando di recuperare questo campo per utilizzarlo, scopro che la variabile non risulta settata, e cosi tutte le altre che avevo assegnato nella prima pagina!L'unico campo che risulta essere settato della variabile SESSION è il flag per il login(infatti il login funziona correttamente in tutte le pagine).

    Ogni pagina contiene session_start() all'inizio.

    Ringrazio vivamente per le risposte.

  2. #2
    prova a stampare in ogni pagina l'array _SESSION. Vedi dove spariscono i dati.

    <?php
    session_start();
    echo "<pre>";
    print_r($_SESSION);


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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    22
    Ciao Piero!Grazie per la risposta tempestiva!

    Ho provato a stampare mi visualizza questo alla pagina resume_1.php

    Array
    (
    [permesso] => 1
    [id_ordinante] => 1
    [num_persone] => 2
    [0] => Array
    (
    [nome] => Mario
    [cognome] => Rossi
    [scuola_surf] => 1
    [attrezzatura] => 0
    [scuola_surf_descr] => Scuola Surf Projecto Beginners
    [prezzo_surf] => 50
    [attrezzatura_descr] => non selezionato
    [prezzo_attrezzatura] => 0
    )

    [1] => Array
    (
    [nome] => Mario
    [cognome] => Bianchi
    [scuola_surf] => 1
    [attrezzatura] => 0
    [scuola_surf_descr] => Scuola Surf Projecto Beginners
    [prezzo_surf] => 50
    [attrezzatura_descr] => non selezionato
    [prezzo_attrezzatura] => 0
    )

    [totale_resume_1] => 100
    )

    Se passo alla pagina succesiva, prenota_casa.php, mi appare questo:

    Array
    (
    [permesso] => 1
    [id_ordinante] => 1
    [num_persone] => 2
    )


    Perchè mai si perdono dati??

  4. #4
    per caso ribatti i valori "permesso, ordinante, num_persone" ???

    perche' se cosi' fosse cancelli "tutto" e riscrivi solo quelli.


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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    22
    No, perchè le print che mi hai consigliato ne ho messa una alla fine del file che riempie $_SESSION[0],$_SESSION[1] e $_SESSION['totale_resume_1'] (cioè resume_1.php) e una subito all'inizio della pagina PHP successiva.

    I campi che perdo sono esattamente quelli che ho salvato nella pagina resume_1.php, quelli salvati nelle pagine precedenti sono tutti presenti(permesso, id_ordinante,num_persone)

    Questa cosa mi sta accadendo in locale, non ho ancora provato sul server.

  6. #6
    Che versione di php stai usando?

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    22
    4.4.0!

    Ho scoperto un altro dettaglio, se faccio un'assegnazione all'inizio del file (diciamo appena dopo session_start() ) questa viene mantenuta tranquillamente, se faccio un'assegnazione del tipo:

    $_SESSION['prova']="prova!";

    alla FINE del file questa non si mantiene attraverso le pagine; assurdo, sembra quasi che le istruzioni che costituiscono il corpo della pagina mi impediscano di mantenere i dati nell'array $_SESSION.


  8. #8
    Originariamente inviato da spinal
    4.4.0!

    Ho scoperto un altro dettaglio, se faccio un'assegnazione all'inizio del file (diciamo appena dopo session_start() ) questa viene mantenuta tranquillamente, se faccio un'assegnazione del tipo:

    $_SESSION['prova']="prova!";

    alla FINE del file questa non si mantiene attraverso le pagine; assurdo, sembra quasi che le istruzioni che costituiscono il corpo della pagina mi impediscano di mantenere i dati nell'array $_SESSION.

    Questa storia mi ricorda un mio problema con la versione php 5.0.4 .... I dati quando trasferiti in un "certo modo" nell'array di sessione, venivano scritti nell'array ma non trasferiti serializzati nel file di sessione. Ora il "certo modo" era una copia da array ad array.

    Poiche' le versioni 4 e 5 vengono sviluppate in parallelo mi sa che nella versione 4.4.0 ci siano le stesse cose della versione 5.4.0.

    Tieni presente che il mio script in 5.0.3 funzionava perfettamente. In 5.0.4 non trasferisce i dati di sessione. Ho segnalato la cosa come bug, ma e' stato dichiarato bogus, cioe' non esistente. Solo perche' avevo riportato il passaggio con POST invece che con un array qualsiasi.

    Sono convinto che se installi la versione 4.3.xx (ultima) questo problema ti sparisce. Devi pero' fare in modo che il tuo script funzioni, altrimenti se poi cambiano la versione sul server sei fregato.

    Fai una prova. Metti la stampa dell'array al fondo, prima del tag di chiusura dello script, e vedrai che l'array sara' popolato.

    intanto cerco il n. del bug che avevo segnalato.

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    22
    Avevo già fatto la prova:se alla fine del sorgente "incriminato" metto la stampa dell'array, l'array è riempito correttamente, è quando chiamo i campi da un'altra pagina che questi non ci sono più.

    Che sia quello? Io nella mia pagina riempio l'array $_SESSION con dati provenienti dall'array $row restituitomi da mysql_fetch_array.

  10. #10
    Originariamente inviato da spinal
    Avevo già fatto la prova:se alla fine del sorgente "incriminato" metto la stampa dell'array, l'array è riempito correttamente, è quando chiamo i campi da un'altra pagina che questi non ci sono più.

    Che sia quello? Io nella mia pagina riempio l'array $_SESSION con dati provenienti dall'array $row restituitomi da mysql_fetch_array.
    Per conto mio il bug e' lo stesso. Ci sono svariate segnalazioni in merito.

    Quello segnalato da me e' questo.

    Ora ti chiedo gentilmente di fare una prova usando pari pari l'esempio del report:
    codice:
    Page1.php
    <?php
    session_start();
    $_test = array('one'=> 'first','two' => 'second', 'last'=>'last');
    $_SESSION = $_test;
    echo "<pre>";
    print_r($_test);
    print_r($_SESSION);
    echo "to page 2";
    ?>
    
    page2.php
    <?php
    session_start();
         echo "<pre>";
         print_r($_SESSION);
    ?>
    Questo sopra dovrebbe dare lo stesso problema che segnali tu. L'esempio sotto invece funziona.
    codice:
    Page1_a.php
    <?php
    session_start();
    $_test = array('one'=> 'first','two' => 'second', 'last'=>'last');
    
      foreach($_test as $key => $value)  {
        $_SESSION[$key] = $value;
        }
    
    echo "<pre>";
    print_r($_test);
    print_r($_SESSION);
    echo "to page 2";
    ?>
    copia e incolla in tre pagine e dimmi cosa ti risulta.


    @ edit:
    Attenzione per chi altri volesse provare. In 5.0.3 funzionano entrambe, cosi' pure in php 4.3.x, ma non in php 5.0.4 e forse anche php 4.4.0 (Andr3a lo aveva supposto)....

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

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.