
Originariamente inviata da
Alhazred
Se alla fine dei giochi il cookie deve essere necessariamente impostato, lo devi mettere in un posto in modo che sicuramente l'assegnazione venga eseguita.
Non mi hai risposto alla prima domanda: La variabile $lang ti serve da qualche altra parte all'interno dello stesso file php?
Poi un'altra cosa, mi sa che sei un po' confuso, perché questa porzione di codice è abbastanza singolare
Codice PHP:
if(isset($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
$_SESSION['lang'] = $lang;
In effetti era fine a se stesso quel controllo. La variabile $lang non serve all'interno del file, perchè il controllo sulla lingua è all'interno della class controller che carica le varie pagine. Poi la lingua la richiamo con la sessione.
Questo è il codice ultimato che sembra funzionare bene.
Codice PHP:
if(isset($_GET['lang'])) {
$lang = $_GET['lang'];
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
} else {
if(!isset($_COOKIE['lang']) && !isset($_SESSION['lang'])) {
$http_lang = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
if (file_exists('../applicazioni/lingue/' . $http_lang)) {
$lang = $http_lang;
} else {
$lang = $this->defaultLanguage;
}
$_SESSION['lang'] = $lang;
} elseif (isset($_COOKIE['lang']) && !isset($_SESSION['lang'])) {
$lang = $_COOKIE['lang'];
$_SESSION['lang']= $lang;
}
}