Есть ли способ сделать заявление 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
Вы можете использовать: 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
У вас есть так много вариантов, с которыми вы можете
благодаря
🙂