• User Newbie

    [PHP] - Variabili di sessione

    Salve a tutti, ho un problema con le variabili di sessione, sembrano non funzionare.
    Ho una pagina (index.php) in cui è possibile selezionare la lingua:

    <html>
    <body>
    [url="main.php?lang=it"]Italiano

    [url="main.php?lang=en"]Inglese
    </body>
    </html>

    la pagina main.php inizia con questo include:
    <?php
    session_start();
    include("prova.php");

    ?>

    La pagina prova.php è quella che fa il controllo della lingua e permette di includere la pagina corretta:

    <?php
    //Lingua di default
    $defaultlang = "it";

    //Cartella dei file di lingua (relativa in base alla posizione del file di config)
    $langpath = "lang";

    //Iniziamo ad avviare le sessioni (toglietelo se già le avete aperte)
    session_start();

    //Se esiste la variabile di sessione 'lingua'
    if (isset($_SESSION['lingua'])) {
    //Se esiste il parametro WEB inviato tramite GET 'lang'

    if(isset($_GET['lang'])) { 
        //Effettuiamo qualche aggiusto per eventuali hack... 
        $_GET['lang'] = str_replace("/","", trim(strtolower($_GET['lang']))); 
        //Se esiste il file di lingua corrispondente al parametro GET richiesto 
    	if (is_file($langpath."/".$_GET['lang'].".php")) { 
            //Imposta la sessione 'lingua' con la lingua scelta 
            $_SESSION['lingua'] = $_GET['lang']; 
    
        //Altrimenti 
        } else { 
            //Imposta la sessione 'lingua' in quella di default 
            $_SESSION['lingua'] = $defaultlang; 
        } 
    } 
    

    //Altrimenti
    } else {
    //Imposta la sessione 'lingua' in quella di default

    $_SESSION['lingua'] = $defaultlang; 
    

    }
    //Finalmente includiamo il file di lingua giusto
    include($langpath."/".$_SESSION['lingua'].".php");

    ?>

    Quale può essere l'errore? Nella cartella temp si crea correttamente il file che contiene la var di sessione.


  • Super User

    session_start();
    questa riga deve essere la prima del codice senza un output in html.
    il motivo è che i dati di sessione (l'id) viene inviato nell'header e quindi è la prima parte della pagina.

    :ciauz:


  • User Newbie

    Ottimo, funziona.
    Però ho un piccolo problema: se la stringa con le due variabili, invece che inserirla nei due file it.php ed en.php Le voglio inserire all'interno del file dove devono poi essere richiamate, come si può fare?
    L'utilità sta nel fatto di poter controllare direttamente da ogni pagina le varibili del file header incluso.

    Grazie per l'aiuto.