Геолокация является важной функцией для веб-сайта, поскольку позволяет онлайн-бизнесам предоставлять целевую контент пользователям на основе их географического местоположения. Используя данные о геолокации, владелец сайта может предлагать локализованный контент, такой как местные новости, погода и мероприятия, и отображать его на родном языке. Это также может помочь предотвратить мошенничество, позволяя компаниям обнаруживать и блокировать подозрительную деятельность, исходящую из определенных географических регионов. Это важный инструмент для владельцев и разработчиков веб-сайтов для улучшения пользовательского опыта и предотвращения мошенничества.
Геолокация может быть реализована различными способами, такими как на уровне веб-сервера, уровне языка программирования или с использованием SDK. В нашем предыдущей статье мы продемонстрировали, как установить геолокацию в сервер Apache. В этой статье я рассмотрю другой подход, установив геолокацию в PHP с помощью установки PECL. Для этого демонстрации мы будем использовать IP2Location, тот же поставщик геолокации, чтобы вы могли понять, как работает геолокация в разных средах.
Обзор IP2Location
IP2Location – это база данных, содержащая информацию об IP-адресах и их связанных локациях. База данных содержит ряд информации, включая страну, регион, город, широту, долготу, часовой пояс, почтовый индекс, код зоны, мобильную информацию, тип использования и многие другие данные об IP-адресе.
Для использования IP2Location необходимо получить копию базы данных и загрузить её в ваше приложение. После загрузки базы данных можно использовать её для геолокации IP-адресов и получения информации о связанных с ними локациях.
Примечание: Различные версии баз данных предоставляют информацию о местоположении с разной степенью детализации. Вам нужно выбрать подходящую для вашего приложения.
Обзор установки PECL
PECL (PHP Extension Community Library) — это репозиторий расширений PHP, позволяющий добавлять дополнительные возможности в ваше PHP-приложение. Расширение IP2Location является одним из доступных расширений в PECL и позволяет использовать IP2Location в вашем PHP-приложении.
Чтобы использовать расширение IP2Location, необходимо установить его на сервер с помощью PECL. После установки расширения можно использовать его в PHP-коде для геолокации IP-адресов и получения информации о связанных с ними локациях. В этом руководстве я предполагаю, что у вас уже установлены Apache и PHP, и вы знакомы с Debian 11.
Пошаговое руководство по реализации геолокации IP в PHP с использованием PECL
Шаг 1: Установка PECL
Первым шагом для реализации IP2Location в PHP является установка PECL. Для установки PECL необходимо иметь установленные заголовки разработки PHP и инструменты на вашей системе. Вы можете установить их с помощью менеджера пакетов, если они еще не настроены. Например, на Ubuntu или Debian можно выполнить следующую команду:
sudo apt-get install php-dev php-pear
Шаг 2: Установка библиотеки IP2Location C
Для компиляции модуля PHP вам понадобится библиотека IP2Location C. Для этого выполните следующую команду:
sudo apt-get install git
Это установит команду git. Затем запустите следующую команду для клонирования проекта IP2Location с GitHub:
sudo git clone https://github.com/chrislim2888/IP2Location-C-Library
Затем, внутри папки проекта, выполните следующую команду:
autoreconf -i -v --force
./configure
make
make install
Вышеуказанная команда установит библиотеку IP2Location C.
Шаг 3: Установка расширения IP2Location
Теперь, когда у вас установлен PECL, вы можете установить расширение IP2Location. Для этого просто выполните следующую команду:
sudo pecl install ip2location
Это скачает и установит расширение IP2Location для PHP.
Шаг 4: Настройка PHP для использования расширения IP2Location
Теперь, когда у вас установлено расширение IP2Location, вам нужно настроить PHP для его использования. Для этого вам нужно добавить строку в файл php.ini
.
Чтобы найти ваш файл php.ini
, вы можете выполнить следующую команду:
php -i | grep php.ini
Это выведет путь к вашему файлу php.ini
. После того как вы узнаете путь, вы можете открыть файл в вашем текстовом редакторе по выбору.
Далее, добавьте следующую строку в ваш файл php.ini
:
extension=ip2location.so
Это скажет PHP загрузить расширение IP2Location.
Шаг 5: Перезапустите Apache
Вам нужно перезапустить сервер Apache, чтобы обновить список модулей PHP. Для этого, пожалуйста, выполните следующую команду:
sudo service apache2 restart
Затем вы можете ввести следующую команду, чтобы проверить, успешно ли установлен и загружен модуль IP2Location:
php -m | grep ip2location
Вы должны увидеть IP2location после выполнения вышеуказанной команды.
Шаг 6: Скачайте базу данных IP2Location
Перед тем как использовать IP2Location для определения местоположения IP-адреса, вам нужно будет скачать базу данных IP2Location. Эта база данных содержит информацию о географическом местоположении каждого IP-адреса.
Вы можете скачать бесплатную базу данных с веб-сайта IP2Location LITE. Существует несколько различных версий баз данных, поэтому убедитесь, что вы выбрали подходящую для ваших нужд.
Шаг 7: Напишите свой код PHP
Теперь, когда у вас установлен расширение IP2Location и загружена база данных, вы готовы начать использовать IP2Location в вашем PHP коде. Вот пример:
// Загрузка базы данных
ip2location_open('path/to/database.bin');
После загрузки базы данных вы можете использовать класс IP2Location для определения местоположения IP-адреса. Вот пример:
// Вывод информации о местоположении
echo 'Country code: ' . ip2location_get_country_short(‘8.8.8.8’) . “\n”';
echo 'Country name: ' . ip2location_get_country_long(‘8.8.8.8’) . “\n”;
Вы увидите следующий результат:
Преимущества и недостатки установки PECL для геопозиционирования
Установка PHP PECL относительно проста по сравнению с модулями Apache, поскольку требует только установки необходимых заголовочных файлов и инструментов разработки PHP. Кроме того, она более гибкая, так как не привязана к конкретному веб-серверу и может использоваться на любой платформе, поддерживающей PHP.
Однако есть и недостатки использования этого решения. Чтобы использовать PHP PECL, вам нужно иметь некоторые знания PHP, команд Linux и основ процесса сборки пакетов. PHP PECL может не работать так хорошо, как модуль Apache для сайтов с высоким трафиком, так как добавляет дополнительный слой обработки для PHP.
Заключение
Важно тщательно оценить преимущества и недостатки каждого подхода к реализации геопозиционирования, чтобы определить, какой из них лучше всего подходит для ваших конкретных нужд. Такие факторы, как ваш технический опыт, платформа сервера и требования к производительности, должны быть приняты во внимание при принятии решения.
Source:
https://dzone.com/articles/implementing-ip-geolocation-in-php-using-the-pecl-install