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

    Oggetti passati tramite variabili di sessione

    Scusate, ho un problema che mi sta' facendo impazzire e spero qui possiate aiutarmi.

    DESCRIZIONE:

    Ho una classe che definisce dei metodi. Instanzio un oggetto. Devo poi utilizzare lo stesso oggetto (stessa istanza dell'oggetto) all'interno di un altro file. Per passarmi l'istanza ho provato a metterlo in una variabile di sessione. Solo che quando poi cerco di utilizzarlo non lo riconosce come tale.

    CODICE ESEMPIO:

    FILE index.php

    /* Crea e assegna la MainArea */
    include_once( dirname( __FILE__ ) . "/class/MainArea.cls.php" );
    session_start();

    ... altro codice ...

    if( ! isset( $_SESSION[mainarea] ) )
    $_SESSION[mainarea] = "";

    $_SESSION[mainarea] = new MainArea();
    $m = $_SESSION[mainarea];

    $m->creaMainArea( $_SESSION[where_i_am] );
    $smarty->assign( 'MainArea', $m->returnMainArea() );

    ... altro codice ...

    FILE executeSearch.ajax.php:

    include_once( dirname( __FILE__ ) . "/class/MainArea.cls.php" );
    session_start();

    ... altro codice ...

    $m = $_SESSION[mainarea];
    $m->creaMainArea( $_SESSION[where_i_am] ); /* <=== ERRORE */

    ... altro codice ...


    TENTATIVI FATTI:

    Usare gli apici singoli nella definizione della variabile di sessione
    $_SESSION['mainarea']

    Assegnare prima l'oggetto ad una variabile e poi assegnare quest'ultima alla variabile di sessione (con e senza apici singoli):

    $m = new MainArea;
    $_SESSION[mainarea] = $m;

    Uso PHP 5.2.3, APACHE 2.x su Debian Lenny.

    Se testo con is_object( $_SESSION[mainarea] ), oppure dopo l'assegnazione
    $m = $_SESSION[mainarea] con is_object( $m ) mi ritorna false.

    Ho anche chiuso il browser per evitare che fosse qualche cache dello stesso che teneva in sessione qualche variabile errrata.

    Dimenticavo, session.auto_start e' settato a 0 (off).

    Grazie per l'aiuto

    Greetings
    JOKER Ltd.

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    non credo ti risolva il problema ma ti consiglio di registrare le variabili di sessione prima di usarle, esempio:

    Codice PHP:
    // Vogliamo creare la chiave 'mainarea' per la sessione
    if(!session_is_registered('mainarea'))
    {
     
    session_register('mainarea');
     
    $_SESSION['mainarea'] = $oggetto;

    Inoltre controlla che nei files in cui richiami questa variabile di sessione, questa (la sessione) sia stata inizializzata, tra i vari metodi esistenti, ti consiglio di utilizzare var_dump($_SESSION), che dovrà essere diverso da null.

    Inoltre ti ricordo che i dati salvati nella sessione saranno disponibili alla pagina successiva a quella che li ha salvati, come avviene per i cookie, quindi una volta che il tuo codice ha salvato i dati nella sessione ti consiglio di utilizzare la funzione header() per effettuare il reindirizzamento alla pagina che avrà bisogno di questi dati.

    Spero di esserti stato utile.
    Ciao

  3. #3

    Re: Oggetti passati tramite variabili di sessione

    Originariamente inviato da joker_ltd
    Scusate, ho un problema che mi sta' facendo impazzire e spero qui possiate aiutarmi.

    DESCRIZIONE:

    Ho una classe che definisce dei metodi. Instanzio un oggetto. Devo poi utilizzare lo stesso oggetto (stessa istanza dell'oggetto) all'interno di un altro file. Per passarmi l'istanza ho provato a metterlo in una variabile di sessione. Solo che quando poi cerco di utilizzarlo non lo riconosce come tale.

    CODICE ESEMPIO:

    FILE index.php

    /* Crea e assegna la MainArea */
    include_once( dirname( __FILE__ ) . "/class/MainArea.cls.php" );
    session_start();

    ... altro codice ...

    if( ! isset( $_SESSION[mainarea] ) )
    $_SESSION[mainarea] = "";

    $_SESSION[mainarea] = new MainArea();
    $m = $_SESSION[mainarea];

    $m->creaMainArea( $_SESSION[where_i_am] );
    $smarty->assign( 'MainArea', $m->returnMainArea() );

    ... altro codice ...

    FILE executeSearch.ajax.php:

    include_once( dirname( __FILE__ ) . "/class/MainArea.cls.php" );
    session_start();

    ... altro codice ...

    $m = $_SESSION[mainarea];
    $m->creaMainArea( $_SESSION[where_i_am] ); /* <=== ERRORE */

    ... altro codice ...


    TENTATIVI FATTI:

    Usare gli apici singoli nella definizione della variabile di sessione
    $_SESSION['mainarea']

    Assegnare prima l'oggetto ad una variabile e poi assegnare quest'ultima alla variabile di sessione (con e senza apici singoli):

    $m = new MainArea;
    $_SESSION[mainarea] = $m;

    Uso PHP 5.2.3, APACHE 2.x su Debian Lenny.

    Se testo con is_object( $_SESSION[mainarea] ), oppure dopo l'assegnazione
    $m = $_SESSION[mainarea] con is_object( $m ) mi ritorna false.

    Ho anche chiuso il browser per evitare che fosse qualche cache dello stesso che teneva in sessione qualche variabile errrata.

    Dimenticavo, session.auto_start e' settato a 0 (off).

    Grazie per l'aiuto

    Greetings
    JOKER Ltd.
    uno.php
    Codice PHP:
    session_start();
    class 
    A{
        public 
    $a;
        public function 
    __construct($a){
            
    $this->$a;
        }
        public function 
    getA(){
            return 
    $this->a;
        }
    }
    $_SESSION['a']=new A('pippo');
    var_dump($_SESSION['a']->getA());
    ?>
    [url="due.php"]qui[/url] 
    due.php

    Codice PHP:
    <?php
    session_start
    ();
    class 
    A{
        public 
    $a;
        public function 
    __construct($a){
            
    $this->$a;
        }
        public function 
    getA(){
            return 
    $this->a;
        }
    }
    var_dump($_SESSION['a']->getA());
    ?>
    questo funziona quindi c'è qc che non va nel codice.
    btw Benvenuto nel forum

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.