- Home
- Categorie
- Coding e Sistemistica
- Coding
- scelta lingua con variabili di sessione
-
scelta lingua con variabili di sessione
Ciao a tutti.
Mi è stato consigliato per un sito multi-lingua di usare le sessioni per la scelta della lingua.Dalla pagina scelta lingua, che sarà index.php, controlla se c'è una sessione memorizzata precedentemente, la cancella e passa alla scelta della lingua
[PHP]<?if (isset($_SESSION['lingua_teile']))
{
session_destroy();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head><body>
<p><a href="scelta.php?lingua=ita">italiano</a></p>
<p><a href="scelta.php?lingua=ing">inglese</a></p></body>
</html><?
}else
{
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head><body>
<p><a href="scelta.php?lingua=ita">italiano</a></p>
<p><a href="scelta.php?lingua=ing">inglese</a></p></body>
</html><?
}
?>[/PHP]
invio la variabile alla pagina scelta.php
[PHP]
<?session_start();
$_SESSION['lingua_teile'] = $_GET['lingua'];
$_SESSION['lingua_teile'] = $lingua_scelta;header ("location: prodotti.php?id=1");
?>[/PHP]
la pagina prodotti.php deve prendersi la variabile memorizzata nella sessione e quindi da questo mi seleziona la tabella
[PHP]$query_lingua = "SELECT * FROM tabella_lingua_$lingua_scelta WHERE id_articolo='$id'";[/PHP]
....A me non funziona!
-
addirittura distruggi la sessione o.O
avresti potuto fare un unset($_SESSION['lingua_teile']);
ma non ne vedo la necessità, in quanto puoi semplicemente sovrascriverlo.
hai il register_globals on? Anche se si, ti sconsiglio di tenerlo attivato.
nella tua query presupponi l'esistenza delle variabili $lingua_scelta e $id, che io non vedo settate.
Ti consiglio VIVAMENTE di fare un controllo sulle suddette variabili, così il tuo script è vulnerabile.
( Se ho scritto cose che hai già fatto, posta il tuo codice per intero, mi sto basando solo su quello che vedo )
-
Si , ti ringrazio per il consiglio della sicurezza ma per ora non è importante!
Diciamo che io vorrei -solo- settare la sessione tramite un menu di scelta come da post precedente, nel momento in cui setto la sessione, in questo caso da quello che ho capito
[PHP]session_start();$_SESSION['lingua_teile'] = $_GET['lingua']; [/PHP]
vorrei che la pagina dopo prendesse il contenuto della sessione che nel mio caso sarà ```
itae quando eseguo la mia query che seleziona la tabella in base alla lingua scelta nel mio caso la variabile $lingua_scelta mi restituisca il valore memorizzato nella sessione.... Pero' tutto questo non avviene, nel momento in cui richiamo il valore della sessione [PHP]$lingua_scelta = $_SESSION['lingua_teile'];[/PHP] non mi stampa nulla e quindi la query non viene eseguita.... Suggerimenti ??? Ps. register_globals è Off
-
[PHP]
$_SESSION['lingua_teile'] = $_GET['lingua'];
$_SESSION['lingua_teile'] = $lingua_scelta;
[/PHP]La seconda riga così ti sovrascrive la prima... con un valore non definito ( $lingua_scelta )
-
Ok, è stato eliminato quindi mi rimane
[php]session_start();$_SESSION['lingua_teile'] = $_GET['lingua']; [/php]che mi setta la sessione, ora per richiamarla
[php]<?$lingua_scelta = $_SESSION['lingua_teile'];
?>[/php]ma non mi visualizza nulla .....
-
Hai fatto ripartire la sessione? ( session_start(); )
-
Si, pero' passando da una pagina all'altra non viene presa...quindi penso di sbagliare qualcosa ma non capisco cosa
-
Guarda prova intanto a fare semplici prove...
pagina1.php
[php]
<? session_start(); $_SESSION['ciao'] = 'mamma'; ?>
<a href="pagina2.php">ciao a chi?</a>
[/php]pagina2.php
[php]
a <? session_start(); print $_SESSION['ciao']; ?>
[/php]
-
Ciao,
da quello che sono riuscito a capire, nella pagina in cui mi serve recuperare il nome della sessione deve esserci[PHP]
session_start();
$lingua_scelta = $_SESSION['lingua_teile'];
[/PHP]Io pensavo che session_start() cancellasse la sessione creata, invece riprende la sessione creata precedentemente , giusto ?
-
Esattamente, quando l'avevo scritto nel messaggio di prima mi riferivo alla seconda pagina, in cui, per l'appunto, non vedevo il secondo session_start().
Hai provato a vedere se va? ( Dovrebbe andare XD )
-
Funziona tutto!
Grazie!
Stavo diventando matto a capire perchè non funzionava!
Ho provato a cambiare register_globals ma alla fine era solo da ricordare il session_start() all'inizio di ogni pagina che utilizza la sessione!!