Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    22

    Variabile di sessione cambia inspiegabilmente valore

    Salve a tutti... ho un problema stranissimo che non riesco a risolvere, ho provato a cercare un po' ma non ho trovato nulla di utile per il mio problema.

    Molto brevemente, ho un index in cui faccio l'include di una pagina passata tramite querystring. Memorizzo questa pagina in una variabile di sessione, in modo da costruirmi un referer e sapere, nella prossima pagina, qual è la pagina di provenienza.

    Questo il codice minimale, privato di tutti i controlli/intestazioni/footer/etc per evitare di appesantire la logica di funzionamento:
    Codice PHP:
    /* index.php */
    session_start();
    $page $_GET['page'];
    include(
    $page ".php");
    $_SESSION['referer'] = $page
    Supponiamo di avere 3 pagine (pag1.php, pag2.php e pag3.php), in ognuna delle quali avrò un'echo del valore di $_SESSION['referer'] e di visitare, nell'ordine:
    codice:
    1. index.php?page=pag1
    2. index.php?page=pag2
    3. index.php?page=pag3
    4. index.php?page=pag3
    5. index.php?page=pag1
    Cosa dovrebbe succedere:
    codice:
    1a. echo di "Notice: Undefined index: referer in pag1.php on line 2";
    1b. $_SESSION['referer'] = 'pag1';
    
    2a. echo della stringa 'pag1';
    2b. $_SESSION['referer'] = 'pag2';
    
    3a. echo della stringa 'pag2';
    3b. $_SESSION['referer'] = 'pag3';
    
    4a. echo della stringa 'pag3';
    4b. $_SESSION['referer'] = 'pag3';
    
    5a. echo della stringa 'pag3';
    5b. $_SESSION['referer'] = 'pag1'.
    ...etc etc.
    Insomma, il funzionamento è piuttosto elementare.

    Il problema è che, per una sola di queste pagine, la variabile di sessione cambia automaticamente valore ad una stringa nota (sempre la stessa), utilizzata in un altro punto della pagina "index.php".


    Il "bello" è che ho testato con un echo il valore di $_SESSION['referer'] in ogni punto critico dell'index (e anche nelle pagine incluse) ed ho scoperto che, per questa pagina, conserva il suo valore esatto fino alla fine (l'ho testata dopo </html>), ma poi all'inizio della successiva (appena dopo session_start(); ) ha già cambiato valore.

    Quale può essere il problema? Sto letteralmente impazzendo..!!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    In che modo cambia valore? Che valore assume?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    22
    Assume il valore "404"... a questo punto posto anche il pezzo di codice interessato:
    Codice PHP:
    $allowedPages = array("pag1""pag2""pag3");
    if (isSet(
    $_GET["page"])) {
      
    $page $_GET["page"];
      
    //se la pagina richiesta non è disponibile
      
    if (!in_array($page$allowedPages)) {
        
    $page "404";
      }
    }
    else {
      
    $page $defaultPage//pagina di default

    Ma il fatto è che il flusso di esecuzione non passa mai quel ramo.

    E la cosa sconvolgente è che sebbene $_SESSION['referer'] venga valorizzata a $page (e mantiene questo valore fino alla fine della pagina), nella pagina successiva vale "404" già da dopo session_start();

    Questo, come già detto, avviene solo e soltanto per una pagina in particolare (in cui non vi è codice PHP peraltro), mentre per tutte le altre (che saranno circa una decina) funziona alla perfezione.


    EDIT: ovviamente quel pezzo di codice si va a sostituire alla banale "$page = $_GET['page']" del codice di esempio del primo post.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    22
    Nessuno ha idea di quale possa essere il problema?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    22
    Si è risolto tutto da solo, così come da solo è venuto.

    Un problema davvero singolare, sembra che l'interprete di PHP sia impazzito per un paio di giorni...!


    Ma sarei curioso di capire le cause (sia del problema che della risoluzione).

    Mah, misteri dell'informatica...!

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.