Infatti, non mi ricordavo bene che session_register la registra automaticamente cercando una variabile $ con quel nome (anche se io userei comunque gli apici, come indicato nel manuale e come consigliato sopra).
Ad ogni modo, come potrai leggere cercando sul web, molti evitano di usare il session_register, usando semplicemente l'array $_SESSION .
Dunque, per sovrascrivere la lingua (passata in get), ovviamente ti manca un terzo caso, in cui pur trovando la variabile in sessione non usi quella in presenza di un valore nuovo passato in GET.
Rielaborando più logicamente,
1) prima di tutto controllo se mi si passa la lingua in get
altrimenti
2) se trovo in sessione la lingua la uso
altrimenti
3) uso una lingua di default (cosa che succederà al primo accesso al tuo sito no? nessuno ti passerà subito qualcosa in get dunque ci vuole un default).
Dunque:
Codice PHP:
session_start(); //Faccio Partire la sessione
if (isset($_GET['l'])){ //in ogni caso prevale il parametro get!
$l = $_GET['l']; //Raccolgo i dati get
$_SESSION['l'] = $l; //Salvo la sessione
}else if (isset($_SESSION['l'])){ //Guardo se la variabile è impostata
$l = $_SESSION['l']; //recupero da sessione
}else{ //Se ricarico la pagina e la sessione è gia settata
$l = 'it'; //se non trovo nulla uso la lingua di default!
}