- Home
- Categorie
- Coding e Sistemistica
- Coding
- Undefined index: HTTP_ACCEPT_LANGUAGE. A cosa è dovuto?
-
Undefined index: HTTP_ACCEPT_LANGUAGE. A cosa è dovuto?
Ciao ragazzi,
spesso il mio server va offline e controllando il log degli errori del server web ho notato che è pieno zeppo di questo errore:FastCGI sent in stderr: "PHP Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in [percorso del file]
Qualcuno sa dirmi cosa vuol dire di preciso quell'errore?
Tra l'altro è molto strano anche perchè la lingua del browser viene correttamente individuata nonostante l'errore generato.Aspetto vostri suggerimenti!
-
Dovresti incollare qui la riga che dà errore così da vedere come modificarla per evitarlo.
-
Grazie per la risposta ma ho risolto
In pratica la funzione $_SERVER['HTTP_ACCEPT_LANGUAGE']; dava un errore quando un browser non restituiva la lingua dell'utente o quando un BOT di Google mi scannerizzava il sito. Ecco tutto
-
@Protone86 said:
Grazie per la risposta ma ho risolto
Ciao Protone, ho letto che hai risolto e hai capito il motivo, ma come hai fatto per far sì che il log non fosse più sommerso dai messaggi di errore?
-
@erecrottod said:
Ciao Protone, ho letto che hai risolto e hai capito il motivo, ma come hai fatto per far sì che il log non fosse più sommerso dai messaggi di errore?
Ciao, vedo che hai riaperto un post aperto quasi un anno fa
In ogni caso, come dicevo in una precedente risposta, l'errore viene generato quando lo script tenta di assegnare una lingua all'utente (leggendo alcuni valori dal suo browser) ma il browser non è presente (ad esempio l'utente potrebbe essere un crawler di Google che tenta di "leggere" le mie pagine).
Per evitare di generare l'errore devi mettere un controllo nel tuo script del tipo:
//Mi ricavo la lingua impostata nel browser if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $lingua=$_SERVER['HTTP_ACCEPT_LANGUAGE']; if (empty($lingua)) $lingua="en";
Parlando in termini comprensibili ho detto allo script che se non riesce a trovare la lingua del browser allora la lingua da impostare di default per le tue pagine deve essere l'inglese (ma puoi ovviamente mettere anche "it" o in qualsiasi altra lingua).
In questo modo lo script avrà sempre una lingua di default anche quando non sarà in grado di leggerla dall'utente per un qualsiasi motivo.
Tutto chiaro?
Chiedi pure se hai bisogno d'aiuto
-
Ti ringrazio per la celerità della risposta (ammetto: non me l'aspettavo).
Ho inserito un ternario di controllo[PHP]$check_language = (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : 'it';[/PHP]
ed ora mi pare che il problema sia risolto!
-
Per la celerità ringrazia le email di notifica e il fatto che sto sempre al pc
Comunque il tuo codice mi pare corretto, buona fortuna
-
Sarebbe più corretto utilizzare la funzione isset al posto di empty.
-
Non saprei, certe volte con "isset" si possono generare errori perchè anche una variabile vuota potrebbe essere considerata "settata" (appunto "Is Set").
Io in questo caso utilizzerei "empty": si va più sul sicuro.
Empty controlla che la variabile sia vuota o piena...
-
Con isset controlli che la variabile esiste e che non sia NULL, con empty, se la variabile non esiste, generi un Notice.