Come da titolo, vorrei ricavare dall'ip dell'utente il paese e se possibile far visualizzare anche una bandiera.
Sapete come fare?
Grazie
Come da titolo, vorrei ricavare dall'ip dell'utente il paese e se possibile far visualizzare anche una bandiera.
Sapete come fare?
Grazie
non c'è bisogno che ti![]()
![]()
per sapere di che paese è il visitatore, basta che vedi tramite $_SERVER["HTTP_USER_AGENT"] e saprai di che paese è.Ovviamente questa funzione visualizza anche il tipo di browser ma anche la lingua adottata, quindi tramite un substr recuperi solo il dato che ti serve.
Codice PHP:
<?php
//Rilevo la lingua
$rilevazione = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$lingua = substr($lingua,0,2); //Isolo la posizione da 0 a 2
echo $lingua;
?>
bè per le flag puoi fare un array al quale associare il dato recuperato e associare un folder con le thumbs delle bandiere... Potresti salvare su un tabella DB ...
Rettifico, scusate per l'errore non usare HTTP_USER_AGENT quello di visualizza il browser, usa invece HTTP_ACCEPT_LANGUAGE.
![]()
FUNZIONA!! GRAZIE!!![]()
Mi sono appena accorto che invece non sempre funziona, ad esempio se da questa variabile $_SERVER["HTTP_USER_AGENT"]; esce:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
oppure
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
(quindi presumo che vengano da google o facebook)
da $_SERVER["HTTP_ACCEPT_LANGUAGE"]; non esce niente
![]()
A dire il vero mi suona nuova la 2° che hai detto "
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
"
Comunque puoi dire meglio come la stai usando, stai usando lo script che ho scritto prima ?
sì sto usando il tuo script, ma anche se non avessi usato il metodo con substr sarebbe stato uguale, perchè il problema non viene dallo script, ma è che proprio alcune volte non esce niente da $_SERVER["HTTP_ACCEPT_LANGUAGE"];
E se per esempio passa uno che si trova in Italia, ma ha il browser impostato in un'altra lingua?
Se passa un inglese avrà presumibilmente il browser impostato per la lingua inglese, ma anche in altre nazioni la lingua ufficiale è l'inglese (ad esempio negli USA, sempre EN è l'impostazione della lingua), come fai a distinguere la provenienza?
perchè per gli americani inizia con: en-US
mentre per gli inglesi inizia con: en-EN
per questo non ho fatto così:
$lingua = substr($lingua,0,2);
ma ho fatto così:
$lingua = substr($lingua,0,5);