Добрый день! Подскажите пожалуйста, есть айпи, например $ip = '85.114.175.250';
Как на PHP сделать GET запрос ipgeobase.ru:7020/geo?ip=85.114.175.250 выпарсить оттуда city и region и поместить их в отдельные переменные?
Если сайт стоит на обычном хостинге, то GeoLite полюбому стоит, его много какого софта в зависимости ставят. На свой серв устанавливается во всех дистрибутивах с командной строки
shell_exec - очень плохое и кривое решение, т.к. открывает потенциальную дыру на сервер.
Данная задача решается очень просто:
1. Через PHP CURL оправляете GET и получаете ответ
2. Парсите XML через PHP SimpleXML
блин, проще сказать что решение плохое, дыра и все такое. IP - это не входящие данные. Человек зайдет с IP, в котором содержится эксплойт для базы GeoIP. Вы хоть понимаете о чем пишете?
Вместо использования shell_exec() программы, которая установлена на сервере, написана на чистом Си, оптимизирована 10-летним опытом лучше чем любой драйвер, программировать свой костыль на пыхе - это не Linuxway. Вам бы завязывать с программированием!
ckr: Программировать костыль? Предлагаю, открывать доступ к Mysql наружу, оставив логин root и пустой пароль, делать конструкции shell_exec($_GET[]), напрямую из GET'a работать с базой(без обработки)
На PHP реализована библиотека, для работы с протоколами Http или FTP.
Программировать костыль? Что-то вы путаете частное с общим. shell_exec() существует, никто из разработчиков php не запрещает его использование. А geoiplookkup - стандартная для любой *nix системы и работает куда быстрее подключения к mysql при этом использует меньше памяти. Еще раз повторяю, входящие значения нужно проверять. IP-адрес - не относится к входящим значениям. В него невозможно поместить эксплойт.
Александр Чибиляев: Заголовок с IP-адресом формируется на более низком уровне, TCP. То есть, значение формируется на сервере, не клиент выбирает ip-адрес, с которого он будет отправлять запрос.