Newsgroup: it.comp.www.php
Titolo: Problema con funzione e sessioni...

Buongiorno a tutti !
Ho scritto una funzione di pochissime righe, che mi salva l'ultima pagina
visitata dal'utente all'interno di una sessione.
Testando lo script su due diverse macchine (Linux+Apache , W2000+IIS5)
ho riscontrato un problema , ma limitatamente alla pagina index !
Su tutte le altre pagine funge correttamente !
Specifico: il problema si riscontra solamente su IIS e W2000. 
DOMANDA: Che differenza passa tra la index č le altre ???
RISPOSTA: La query string in index.php non c'č, credo sia questo il
problema.
Posto il codice della funzione ! 
function Save_Page_Session() {
        global $_SERVER;
        if (isset($_SERVER["SCRIPT_NAME"])) {
            $url = $_SERVER["SCRIPT_NAME"];
        } elseif (isset($_SERVER["PHP_SELF"])) {
            $url = $_SERVER["PHP_SELF"];
        }
        if(!isset($_SERVER['QUERY_STRING'])
        	|| empty($_SERVER['QUERY_STRING'])) {
                    $_SESSION['user_page'] = $url;
        }
        if (isset($_SERVER['QUERY_STRING'])
                  && ($_SERVER['QUERY_STRING'] != "")) {
                    $_SESSION['user_page'] = $p_code . "?" . $_SERVER["QUERY_STRING"];
        }
    }
Detto questo, la fuzione funge correttamente ovunque essa serva, tranne
che nella index, dove appunto, non c'č QUERY STRING !
Domanda: c'č forse qualche bug sotto questo aspetto da parte di IIS ???
Credo di aver letto qualcosa tempo fa, ma non ricordo piu ! 
Tuttavia debuggando manualmente (un ciclo foreach su $_SESSION),
non trovo l'indice ['user_page'], il che significa che le condizioni sulla
funzione sopra non sono state rispettate. A me con tutta franchezza
sfugge; qualcuno di voi a qualche idea ??? 
Ciao e grazie a tutti !
Clust

         global $_SERVER;
questa riga č inutile, $_SERVER č superglobale

         global $_SERVER;
Codice inutile, l'array $_SERVER (insieme ad altri) e' un array
superglobale.
Per il resto il codice funziona. 
Per testart ho eseguito:
session_start ();
Save_Page_Session ();
print_r ($_SESSION);
Il tuo script restituisce qualche errore/warnin/notice?
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

 Il tuo script restituisce qualche errore/warnin/notice?
Yes... passo a spiegare rapidamente...
Ad esempio, ad ogni utente è data la possibilità di modificare la lingua
di visualizzazione.
Attraverso la query string passo la informazioni:
lang.php?lang=it
Benissimo, ora in lang.php mi ritrovo questa situazione:
session_start();
...
// [vari controlli che ometto, per brevità]
$_SESSION['user_lang'] = $_GET['lang'];
...
e poche righe piu' in basso redigo l'utente alla pagina
iniziale:
header("Location: http://" . $_SERVER['HTTP_HOST'] .
$_SESSION['user_page'] . "");
L'errore è: Undefinited index: $_SESSION['user_page']
Mettendo 
if(isset($_SESSION['user_page'])) { ...
scompare l'errore ovviamente, ma non avviene il redirect.
In tutte le altre pagine, problemi non sussistoino: il redirect funziona
perfettamente !
Grazie ancora !

 funziona perfettamente !
Se non posti il codice completo e' un po difficile tracciare l'errore. 
Nella tua funzione Save_Page_Session ci sono due possibile problemi:
1^ La variabile $url potrebbe venire utilizzata senza che sia stata
prima inizializzata, per risolvere il problema inizializzala con un
valore di default (es index.php etc.) prima di "if (isset
($_SERVER["SCRIPT_NAME"]))" oppure dopo con una cosa del tipo "else {
$url = "index.php"; }.
2^ La variabile $p_code non e definita. 


 2^ La variabile $p_code non e definita.
3^ possibilità: ho postato il codice corretto (non so nemmeno come), ma
la mia funzione era sbagtiata ? :o) Come avrò mai fatto ?!?!? eppure era
proprio un cut & paste !!!!
Mah... grazie cmq. ciao 
Clust