Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401

    simplexml_load_file e $_SESSION

    Come da titolo, ho uno strano problema usando simplexml_load_file e le variabili di sessione.

    In pratica ho due files, uno che genera un XML e l'altro che lo legge.
    Il file che genera l'XML dovrebbe leggere delle variabili di sessione settate nell'altro file, ma non funziona...

    Ho creato due semplici file di esempio, per spiegare meglio la situazione

    Ecco il file 1
    http://www.nicolaromano.net/misc/testsession/1.php

    Notate come la variabile di sessione sia correttamente settata nel file, ma non venga letta dal file 2

    La cosa strana è che aprendo direttamente file2.php (link in fondo alla pagina) la variabile viene letta correttamente!!!

    FILE 1 (che legge l'XML)
    Codice PHP:
    <? session_start();
    $_SESSION['test'] = 'ciao!';
    echo 
    '[b]In file 1[/b]
    '
    ;
    echo 
    'var = '.$_SESSION['test'].'
    '
    ;
    echo 
    '[b]Reading file 2[/b]
    '
    ;
    $xml simplexml_load_file("http://www.nicolaromano.net/misc/testsession/2.php");
    echo 
    'var = '.$xml['var']; 
    echo 
    '
    [url="2.php"]File 2[/url]'
    ;
    ?>
    FILE 2 (che genera l'XML)
    Codice PHP:
    <?
    header
    ('Content-type:application/xml');
    session_start();

    echo 
    '<?xml version="1.0" encoding="utf-8"?>';

    echo 
    '<test>';
    echo 
    '<var>'.$_SESSION['test'].'</var>';
    echo 
    '</test>';
    ?>
    Qualcuno sa spiegarmi il perchè di questo comportamento? E come bypassare il problema?

    grazie
    nico

  2. #2
    Metodo alternativo e non soluzione del problema:
    usare i cookie?
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    hmmm tutto il resto del sito è già funzionale utilizzando le variabili di sessione. Vorrei evitare di riscrivere tutto con i cookies. Inoltre ci sono alcune variabili che decisamente non voglio scrivere in un cookie...

    La cosa che mi domando è: dove sta l'errore???

  4. #4
    Beh, non intendevo in tutto il sito ma in questo caso...
    Prova, ma non sono per nulla sicuro, ad aprire la sessione prima di tutto:
    Codice PHP:
    <? 
    session_start
    (); 
    header('Content-type:application/xml'); 

    echo 
    '<?xml version="1.0" encoding="utf-8"?>'

    echo 
    '<test>'
    echo 
    '<var>'.$_SESSION['test'].'</var>'
    echo 
    '</test>'
    ?>
    p.s. ora la pagina sul tuo link sembra funzionare...
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Sì, scusa, stavo facendo dei test, per quello non funzionava più!

    Mettere session_start() prima di header non sembra cambiare nulla.

    Ho anche provato a passare il session_id e a settarlo prima di fare session_start() ma non funziona lo stesso. Allo stesso modo, ho provato a chiudere la sessione in 1.php prima di chiamare simplexml_load_file, ma non è servito...

  6. #6
    Se la chiudi in teoria la distruggi, e non puoi più leggerla.
    Comunque mi sembrava funzionasse, no?
    A me compare Ciao! nella seconda pagina.
    Prova con un altro browser...
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Sì, l'XML funziona perfettamente quando lo apri da solo... il problema è quando ne leggi il contenuto da un altro file che non funziona!

    Avevo provato a chiudere la sessione (non distruggerla, ma usando session_write_close) perchè ho pensato che magari ci fosse un problema di permessi di lettura sui files di sessione (vedi ad es. http://bugs.php.net/bug.php?id=44134), ma non è quello il problema purtroppo...

  8. #8
    Beh, io passando dall'1 al due mi faceva visualizzare la scritta.
    E' cambiato il problema o mi sono perso io?
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Scusami, forse sono io che non mi sono spiegato bene.

    Allora, se tu passi da 1 a 2 oppure apri 2 nel browser è tutto a posto, vedi la variabile. E su questo siamo d'accordo.

    Il problema è:
    L'output di 1.php (almeno, quello che vedo io) è:

    codice:
    In file 1
    var = ciao!
    Reading file 2
    var =
    Come vedi, dopo che ha letto file 2 con simplexml_read_file il contenuto di $xml['var'] che dovrebbe essere "ciao" è invece NULL.
    (ho aggiunto un var_dump di $xml, per spiegare meglio il problema)

  10. #10
    AH! OK! ora ho capito!
    Beh, nel momento in cui setti una sessione quella è attiva da subito.
    Hai provato a togliere la session_start dal file 2?
    Magari va in conflitto, essendoci una doppia apertura di sessione.
    Se non funziona quello vuol dire che c'è un errore nel recupero della variabile var dall'xml.
    Ce l'ho fatta! - ItalianPixel -

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.