- Home
- Categorie
- Coding e Sistemistica
- PHP
- [PHP] - Variabili di sessione
-
[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.
-
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.
-
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.