Newsgroup: it.comp.www.php
Titolo: [Sito multilingue] funzione per ricaricare pagina al cambio di una variabile di sessione?

CIao a tutti,
sono anni che ci provo, ma non riesco proprio a far funzionare un
sistema di cambio lingua sul mio sito.
ho impostato la pagina iniziale con la scelta della lingua.
scelta la lingua, viene settata una variabile di sessione e caricata
un'altra pagina con il comando HEADER.
Io vorrei implementare la scelta della lingua in ogni pagina.
In ogni pagina includo le classiche 2 bandierine (IT, UK) e al click
su una di queste, la variabile di sessione lingua viene aggiornata e
la pagina corrente viene ricaricata con la relativa lingua.
ma non ci riesco.
e' possibile usare il comando header per ricaricare la stessa pagina?
questo e' il codice sulla pagina di seleizone lingua:
prima del tag body:
<?php session_start(); 
if(isset($_GET['lingua']))
 {
        #la registri come di sessione
        $_SESSION['lingua']=$_GET['lingua'];
		header("Location: home.php");
  }
?>
Mentre nel body, il link della lingua e' cosi' impostato:
index.php?<? echo SID?>&lingua=it
index.php?<? echo SID?>&lingua=uk
comne fare?
vi ringrazio in anticipo.
tony

 e' possibile usare il comando header per ricaricare la stessa pagina?
Perche' dovresti fare un redirect, e' inutile.
Inserisci il codice di cambio della lingua all'inizio della pagina (es.
tramite include) ed inserisci un semplice link ?lingua=en . In questo
modo la variabile di sessione verra' modificata prima che inizia la
renderizzazione della pagina ed il resto del codice accedera' al valore
gia' aggiornato.
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

gia' aggiornato.
vediamo se ho capito (scusami, per favore):
inserisco un codice tipo questo nelle prime righe della pagina (puo'
diventare un include):
<? session_start(); 
if(isset($_GET['lingua']))
 	{
		 $_SESSION['lingua']=$_GET['lingua'];  
	}
if (!isset($_SESSION['lingua']))
        {		session_register ('lingua');
		$_SESSION['lingua'] = "it";
        }
?>
e ad ogni link di cambio lingua assegno solo il parametro &lingua=it,
oppure &lingua=uk ...etc...etc...
provo... click! click! ta-da-click!
attendo...
verifico...
Funziona!
orpola'! com'e' che adesso funziona? sono tornato su questo argomento
almeno 10 voltre con scarsissimi risultati e adesso con un paio di
click e funziona?
ultima domanda prima di ritirarmi su un monte sperduto:
in precedenza mi era stato suggerito di impostare cosi' il link del
cambio di lingua: 
<? echo SID?>&lingua=it
<? echo SID?>&lingua=uk
hummm! cosa significa? viene generato un numero di sessione e aggiunto
alla variabile? e' una misura di sicurezza? se si', devo usare sempre
questa sintassi quando lavoro con la variabile di sessione lingua?
ciao e grazie ancora. ;).
tony

 sul link ?lingua=en?
anni fa l'ho fatto cosě.
era pensato per siti con due lingue soltanto, quindi mostra una sola 
bandierina, quella della lingua in cui _non_ si č.
---------------------------
// url della pagina in cui mi trovo
$redurl = getenv("REDIRECT_URL");
// tutto quello che c'e' nell'url dopo il ?
$restring = getenv("REDIRECT_QUERY_STRING");
// query string di default (in questo caso forzo l'italiano)
if ($restring == "") {$restring="lang=i";}
// costruzione del link
$flourl = $redurl . "?" . $restring;
if ($lang=="i") {
	$flang="e";
	$flurl = ereg_replace("lang=i", "lang=e", $flourl);
} else {
	$flang="i";
	$flurl = ereg_replace("lang=e", "lang=i", $flourl);
	}
// decide quale bandierina caricare
// flag_i.gif oppure flag_e.gif
$flag = "img/flag_" . $flang . ".gif";
---------------------------
dopo di che nel div in cui c'č la bandierina scrivo una cosa del tipo:
---------------------------
echo("<a href=\"$flurl\"><img src=\"$flag\"></a>");
---------------------------
probabilmente si puň scrivere in maniera piů efficiente, ma č un inizio 
funzionante.
ciao
-- 
  ryo