
Originariamente inviata da
Alhazred
La variabile $lang ti serve da qualche altra parte all'interno dello stesso file php? Perché altrimenti è inutile.
Penso che nella logica ci sia qualcosa che non va, secondo me nell'ultimo else non ci entrerai mai, almeno una $_SESSION'lang'] o $_COOKIE['lang'] a quel punto saranno sempre settate.
Qual'ora, cambiando la logica, entrassi in quell'else vorrebbe dire che nessuna tra $_SESSION'lang'] e $_COOKIE['lang'] è settata e lì dentro non le setti, quindi non le avrai disponibili nelle altre pagine.
Ho modificato così. In pratica se la lingua del device non esiste tra le traduzioni viene impostata quella di default. Ma non ho ben chiaro quando impostare il setcookie, se solo dopo il GET oppure anche in altri punti
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;
}
if(isset($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
$_SESSION['lang'] = $lang;
} elseif (isset($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
$_SESSION['lang']= $lang;
}
}