- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi con variabile di sessione e XML
-
Questo significa che lo script funziona, la sessione è avviata ma non contiene nulla (un array vuoto).
Ecco il motivo per cui *echo $_SESSION['feedcode'];*non restituisce niente (anche se abilitando la visualizzazione dei notice avrebbe mostrato un undefined index).
-
mmm...
Non sembrerebbe un problema legato a XML...Ora, nella pagina1 (quella di Joomla) anzichè costruire XML ho messo:
**
$_SESSION['feedcode']="pippo"**Nella pagina1, se faccio echo** $_SESSION['feedcode'];** mi scrive correttamente "pippo"
La stessa istruzione nella pagina2 (la mia) non scrive nulla...
Manca forse qualcosa a livello di Header?
-
Come faccio quindi a recuperare il valore di questa sessione? Dove se lo perde???:?
-
Secondo me hai un problema di propagazione della sessione.
Prova ad inserire questo codice in entrambe le pagine e confrontane i risultati:
[php]<?php echo(session_name() . ' => ' . session_id()); ?>[/php]
-
Credo anche io, anche se non so perfettamente cosa ciò significhi in php...
Risultato:
pagina1:
2b9632643123cb4354dfc096d4ffd0f7 => 9991f63a2e18839cd16157244d7eb3dfpagina2:
PHPSESSID => eb0f910ae3098944e452a1bf2ac88f7cNon legge la stessa roba direi
-
Prova a modificare la pagina2 in questo modo:
[php]<?php
session_name('2b9632643123cb4354dfc096d4ffd0f7');
session_start();
echo($_SESSION['feedcode']);
?>[/php]
-
Niente...
Pagina bianca....
-
Innanzitutto..
prova con
var_dump($_SESSION);
e vedi cosa ti esce...
poi potresti provare così:Crea il file sessione.php con questo codice dentro:
<?php
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies',1);
session_start();
?>poi modifica il codice così:
require "sessione.php";
$_SESSION['feedcode']="<?xml version='1.0' encoding='ISO-8859-1'?>
<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:content='http://purl.org/rss/1.0/modules/content/'>
<channel>";$_SESSION['feedcode']=$_SESSION['feedcode']."<title>".$title."</title><link>http://www.miosito.ext/news/</link><description>Notizie al Web a cura di MioSito.ext</description><language>it</language>";
....QUI SCRIVO ALTRA ROBA IN $_SESSION['feedcode']...RIMOSSO PER ABBREVIARE
$_SESSION['feedcode']=$_SESSION['feedcode']."</channel></rss>";
?><a href="./modules/mod_eventlist_rss/events_rss.php">Live Feeds</a>
E poi...
<?php
require "sessione.php",
echo (isset($_SESSION['feedcode'])) ? $_SESSION['feedcode'] : "Impossibile trovare la sessione";
?>
-
Dopo il tuo suggerimento:
**Warning**: session_start() [[function.session-start](http://www3.pipeline.it/modules/mod_eventlist_rss/function.session-start)]: Cannot send session cookie - headers already sent by (output started at /home/web/public_html/modules/mod_eventlist_rss/events_rss.php:5) in **/home/web/public_html/modules/mod_eventlist_rss/session.php** on line **4** **Warning**: session_start() [[function.session-start](http://www3.pipeline.it/modules/mod_eventlist_rss/function.session-start)]: Cannot send session cache limiter - headers already sent (output started at /home/web/public_html/modules/mod_eventlist_rss/events_rss.php:5) in **/home/web/public_html/modules/mod_eventlist_rss/session.php** on line **4** Impossibile trovare la sessione
-
togliendo dall'ultima pagina "require(sessione.php)"
ho solo:
"Impossibile trovare la sessione"
-
Uhm...ripeto la domanda di prima...cosa ottieni con
var_dump($_SESSION);
?
Poi, per il warning..ti suggerisco di modificare il file sessione cosi:
<?php
session_start();
$feedcode ="";
session_register("feed_code");
?>E modifica il file cosi:
<?php
require "sessione.php",
echo (session_is_registered('feedcode')) ? $_SESSION['feedcode'] : "Impossibile trovare la sessione";
?>
-
Dunque...
Mi ero dimenticato questo test...
Ho messo definitivamente come test "pippo" nella sessione per evitare problemi dovuti a XML
Il "var_dump($_SESSION);" nella pagina1 dà un amarea di roba tra cui ["feedcode"]=> string(5) "pippo" } (quindi la sessione fin lì c'è)Nella pagina 2 invece dà "NULL"....(quindi si è perso la sessione?)
-
Ohi Ohi...
Dunque:
il tuo ultimo esempio ha avuto come risultato:"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line **0"
register_globals **è su OFF in effetti...C'entra questa opzione?
-
No, non disattivare register_globals, porterebbe ad un alto calo di sicurezza..
direi che si è proprio persa la sessione...
-
OK,
Comunque ieri stavo pensando di risolvere così (dovrebbe funzionare e mi pare anche più pulito...)Nella pagina1 chiamo una funzione su pagina2 a cui passo come parametro il contenuto XML. La pagina2 deve a quel punto solo prendere ciò che le arriva e fare echo...
O no???;)
-
A quel punto ti basta ob_start()/include()/ob_get_clean()