PHP IF, основанный на географическом местоположении?

Есть ли способ сделать заявление PHP If, основанное на местоположении лиц?

Моя проблема сводится к партнерским ссылкам Amazon. Ссылка на покупку DVD на Amazon.co.uk отличается от той, которую вы покупаете на Amazon.com, и мне нужен способ показать только правильный.

В то же время, если они не основаны ни в одной из стран, я не хочу, чтобы эта ссылка отображалась в первую очередь.

Пример:

If Location = UK; print "amazon-UK-link" If Location = US; print "amazon-US-link" If location = None of the above; print nothing 

Solutions Collecting From Web of "PHP IF, основанный на географическом местоположении?"

Вы можете использовать: string geoip_country_code_by_name (string $ hostname)

Пример:

 <?php $country = geoip_country_code_by_name('www.example.com'); if ($country) { echo 'This host is located in: ' . $country; } ?> 

Вывод:

Этот хост находится в: США

Для вашего случая вы можете использовать: geoip_country_code_by_name($_SERVER['REMOTE_ADDR']); чтобы получить код страны для текущего пользователя.

Вам нужно будет использовать IP-адрес посетителя для поиска своего физического местоположения. Помимо использования расширения GeoIP для PHP (как указано stewe), есть два способа сделать это:

Простой способ

Используйте внешнюю службу, такую ​​как http://www.hostip.info

С вашими собственными данными MySQL

1.) Извлеките IP-адрес посетителей:

 if (getenv('HTTP_X_FORWARDED_FOR')) { $ip_address = getenv('HTTP_X_FORWARDED_FOR'); } else { $ip_address = getenv('REMOTE_ADDR'); } 

2.) Преобразуйте IP-адрес посетителя в IP-номер:

 $ips = explode(".",$ip_address); return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256); 

3.) Найдите IP-номер из своей базы данных, который вы можете скачать здесь . Например: IP-адрес 202.186.13.4 преобразуется в IP-номер 3401190660. Он находится между началом и окончанием следующих IP-номеров:

 Beginning_IP | End_IP | Country | ISO -------------+-------------+----------+---- 3401056256 | 3401400319 | MALAYSIA | MY 

Для этого вам нужно использовать geoip с помощью maxmind http://www.maxmind.com/app/ip-location или есть еще один вариант, поиск IP-интерфейса Country API, а также некоторые из них в Интернете.

Вы можете использовать простой API от http://www.geoplugin.net/

 $xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr()); echo $xml->geoplugin_countryName ; echo "<pre>" ; foreach ($xml as $key => $value) { echo $key , "= " , $value , " \n" ; } function getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } 

Вывод

 United States geoplugin_city= San Antonio geoplugin_region= TX geoplugin_areaCode= 210 geoplugin_dmaCode= 641 geoplugin_countryCode= US geoplugin_countryName= United States geoplugin_continentCode= NA geoplugin_latitude= 29.488899230957 geoplugin_longitude= -98.398696899414 geoplugin_regionCode= TX geoplugin_regionName= Texas geoplugin_currencyCode= USD geoplugin_currencySymbol= $ geoplugin_currencyConverter= 1 

У вас есть так много вариантов, с которыми вы можете

благодаря

🙂