Ti dico come fare se volessi arrivare al risultato che hai chiesto.
Innanzitutto nei miei siti lavoro con una sola index.php che richiama diversi moduli, quindi il discorso della scelta lingua lo metterei o direttamente nella pagina index.php o in un file che comunque includo ovunque.
I requisiti che chiedi sono:
1. Non passare via get la lingua se non per cambiarla
2. Ricordare la lingua dell'utente nelle visite successive
Procediamo quindi cercando la lingua secondo questa priorità
1. GET
2. COOKIE
3. SESSION (si potrebbe evitare ma facciamo finta che tu poi passerai l'id di sessione per essere sicuro che le sessioni funzionino anche per quei browser che non autorizzano i cookie).
Quindi
codice:
// lingue implementate sul sito
$lingue_sito = array('it', 'en');
if(isset($_GET['lang']) && in_array($_GET['lang'], $lingue_sito)) {
$lang = $_GET['lang'];
} elseif(isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $lingue_sito)) {
$lang = $_COOKIE['lang'];
} elseif(isset($_SESSION['lang']) && in_array($_SESSION['lang'], $lingue_sito)) {
$lang = $_SESSION['lang'];
} else {
$lang = 'it';
}
// ora sono sicuro che $lang contiene una sigla valida in ogni caso contemplabile, quindi la
// uso per farne ciò che voglio, comporre i link nel caso voglia passarmela via get, usarla per
// comporre percorsi per caricare i files necessari e settare cookie e valore in sessione per le
// future navigazioni, quindi:
$_SESSION['cookie'] = $lang;
setcookie('lang', $lang, time()+(30*24*3600)); // cookie con durata di 30 giorni
In pratica abbiamo contemplato i casi in cui:
1. L'utente visita per la prima volta il tuo sito, e non passa nulla via get (ricade nell'ultimo else)
2. L'utente ha già visitato il tuo sito 10 giorni fa ma non permette il settaggio dei cookie (ricade nell'ultimo else)
3. L'utente ha già visitato il tuo sito 10 giorni fa e permette i cookie (primo elseif)
4. L'utente sta navigando il tuo sito, non permette il settaggio dei cookie, ma tu stai passando via get l'id di sessione, e lo usi per recuperare ogni volta la sessione dell'utente (secondo elseif)