la faccio figa

codice:
$lang = !isset($_GET['lang'])
  ? 'IT'
  : (
    $_GET['lang']=='IT' ||  $_GET['lang']=='EN'
    )
      ? $_GET['lang']
      : 'IT';


te l'ho spezzato su + righe per fartelo capire meglio, ma in realtà poteva stare su una sola

si chiama "operatore ternario" (che bello, credo che sia una delle poche volte che mi ricordo come si chiama ) in pratica ti permette di restituire un valore od un altro in base alla condizione booleana

ovvero

$variabile = CONDIZIONE_BOOLEANA ? RESTITUITO_QUESTO_VALORE_SE_TRUE : RESTITUITO_QUESTO_VALORE_SE_FALSE

la condizione booleana deve valere true o false

in tutti e 3 i parametri puoi mettere qualsiasi cosa vuoi, ma ricordati ovviamente che nel primo deve essere gestito come valore booleano...un po come un if
codice:
if (CONDIZIONE_BOOLEANA) {
  $variabile = RESTITUITO_QUESTO_VALORE_SE_TRUE;
} else {
  $variabile = RESTITUITO_QUESTO_VALORE_SE_FALSE;
}
xo è + comodo da usare

quello che ti ho scritto su un doppio operatore ternario, in pratica lanci il primo, se il valore che ritorna il primo è true (isset restituisce false se il valore non è settato, ma quel punto esclamativo all'inizio inverte il valore booleano...!true = false e al contrario...quindi !false diventa true) allora lancia il secondo operatore ternario che verifica se il contenuto è IT o EN altrimenti, se false, in tutti e due i casi, restituisce IT

è possibile anche farlo con un solo operatore ternario cosi...

codice:
$lang = isset($_GET['lang']) && $_GET['lang']=='IT' &&  $_GET['lang']=='EN'
  ? $_GET['lang']
  : 'IT';


non so se mi sono spiegato, ma c'ho provato