Извлечение информации о стране из Cloudflare в PHP: несколько методов и примеры кода

Cloudflare – это популярная сеть доставки контента (CDN) и служба безопасности, предоставляющая различные функции веб-разработчикам. Одной из полезных функций является возможность получать информацию о стране на основе IP-адреса пользователя. В этой статье блога мы рассмотрим несколько методов использования PHP для извлечения информации о стране из Cloudflare. Мы предоставим примеры кода для каждого метода, чтобы помочь вам реализовать их в своих проектах.

Метод 1: использование заголовка геолокации Cloudflare
Cloudflare добавляет специальный HTTP-заголовок под названием «CF-IPCountry» к каждому запросу, который содержит двухбуквенный код страны местоположения посетителя. Вы можете получить доступ к этому заголовку, используя суперглобальную переменную $_SERVERв PHP. Вот пример фрагмента кода:

$countryCode = $_SERVER['HTTP_CF_IPCOUNTRY'];
echo "Visitor's country code: " . $countryCode;

Метод 2: использование API геолокации IP Cloudflare
Cloudflare предоставляет API геолокации IP, который позволяет получать подробную информацию о геолокации на основе IP-адреса. Вы можете сделать HTTP-запрос к конечной точке API, передав IP-адрес посетителя, и получить ответ JSON, содержащий различные данные, включая информацию о стране. Вот пример фрагмента кода с использованием cURL:

$ipAddress = $_SERVER['REMOTE_ADDR'];
$apiKey = 'YOUR_API_KEY';
$apiUrl = "https://ipinfo.io/{$ipAddress}?token={$apiKey}";
$curl = curl_init($apiUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
$countryCode = $data['country'];
echo "Visitor's country code: " . $countryCode;

Метод 3: использование Cloudflare Workers
Cloudflare Workers позволяет запускать код JavaScript на границе сети Cloudflare. Используя Workers, вы можете извлекать информацию о стране непосредственно на серверах Cloudflare. Вот пример фрагмента кода с использованием JavaScript:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
  const ip = request.headers.get('CF-Connecting-IP');
  const response = await fetch(`https://ipinfo.io/${ip}/json?token=YOUR_API_KEY`);
  const data = await response.json();
  const countryCode = data.country;
  return new Response(`Visitor's country code: ${countryCode}`);
}

В этой статье мы рассмотрели несколько методов извлечения информации о стране из Cloudflare с помощью PHP. Мы обсудили использование заголовка геолокации Cloudflare, использование IP Geolocation API и использование Cloudflare Workers. Реализуя эти методы, вы можете улучшить свои веб-приложения с помощью функций геолокации. Не стесняйтесь выбирать метод, который лучше всего соответствует вашим потребностям, и интегрируйте его в свои проекты PHP.