Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema memorizzazione oggetti in sessioni

    Salve a tutti. Non riesco a salvare un oggetto nella sessione e non riesco a capire il motivo...

    Allora, in cima ad ogni pagina ovviamente includo una chiamata a session_start().
    Poi creo un oggetto di una mia classe (Utente) e la salvo nella sessione in questo modo:

    $_SESSION['myuser'] = $utente;

    Quando in un'altra pagina vado a recuperare l'oggetto in questo modo:

    $myuser = $_SESSION['myuser'];

    E provo a richiamare un suo metodo, ecco che mi viene lanciato un messaggio di errore:

    "Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Utente" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /opt/lampp/htdocs/webs/index.php on line 94"

    Qualcuno è in grado di dirmi cos'è che non va?
    Grazie mille

  2. #2
    Dai uno sguardo alla risposta al post http://forum.html.it/forum/showthrea...readid=1325467
    Ne cito un estratto.

    In session conviene non salvare mai tipi di dato complessi ma ridurli il più possibile ad identificatori semplici.
    Ad esempio, se hai necessità di salvare in sessione l'utente non salvare l'oggetto User ma il suo db. Usa invece operazioni di caching per evitare di dover aver bisogno di accedere ai dati sempre e comunque quando non necessari.
    Non salvare in session l'oggetto utente. Salva il suo identificativo (esempio l'ID) e carica l'oggetto runtime.
    Nello specifico, il tuo problema deriva dal fatto che quando l'interprete tenta di deserializzare l'oggetto, non trova la definizione della classe dell'oggetto. Così tenta di invocare __autoload che però si schianta perché non trova la definizione della classe.

    Assicurati che la classe sia caricata.

  3. #3
    Originariamente inviato da weppos
    Dai uno sguardo alla risposta al post http://forum.html.it/forum/showthrea...readid=1325467
    Ne cito un estratto.



    Non salvare in session l'oggetto utente. Salva il suo identificativo (esempio l'ID) e carica l'oggetto runtime.
    Nello specifico, il tuo problema deriva dal fatto che quando l'interprete tenta di deserializzare l'oggetto, non trova la definizione della classe dell'oggetto. Così tenta di invocare __autoload che però si schianta perché non trova la definizione della classe.

    Assicurati che la classe sia caricata.
    Ma se salvo solo l'ID poi ho bisogno di continue query al database... comunque ho risolto leggendo ogni volta l'oggetto in questo modo:

    $myuser = unserialize (serialize ($_SESSION['myuser']));

  4. #4
    Originariamente inviato da Dreamer89
    Ma se salvo solo l'ID poi ho bisogno di continue query al database... comunque ho risolto leggendo ogni volta l'oggetto in questo modo:

    $myuser = unserialize (serialize ($_SESSION['myuser']));
    Questa non è una soluzione, è un workaround che forse può anche funzionare ora ma non ha alcun senso.
    Se il tuo obiettivo è programmare a tentoni senza logica allora prosegui pure su questa strada.

  5. #5
    Originariamente inviato da weppos
    Questa non è una soluzione, è un workaround che forse può anche funzionare ora ma non ha alcun senso.
    Se il tuo obiettivo è programmare a tentoni senza logica allora prosegui pure su questa strada.
    Ma è l'unico modo che esiste per poter salvare gli oggetti nelle sessioni...

  6. #6
    Oppure dovrei cercare di capire quale sia l'operazione più dispendiosa... salvare le informazioni relative all'utente in sessione, oppure limitarsi a salvare il solo nick e poi andare ad effettuare ogni volta una query al database... considerando che nel mio sito tutte le pagine avranno bisogno di accedere a queste informazioni

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.