<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как узнать страну по IP-адресу через PHP

Как узнать страну по IP-адресу через PHP

Если Вы собираетесь делать собственную статистику посещений для своего сайта, то, наверняка, Вы захотите знать, из какой страны приходят к Вам посетители. Узнать страну посетителя можно по его IP-адресу, и в этой статье мы разберём, как это делается через PHP.

Узнать страну по IP-адресу через PHP можно двумя путями. Первый путь - это воспользоваться каким-нибудь WHOIS-сервисом, отправив на него запрос и получить от него ответ. Второй вариант - создать свою таблицу в базе данных, в которой будут находиться соответствия IP-адресов и стран. Плюсы и минусы первого и второго способа очевидны, поэтому не буду на них останавливаться. Второй способ реализации зависит от Вашей базы данных и от таблицы, в которой находятся соответствия IP-адресов и стран. Поэтому мы с Вами рассмотрим первый способ, так как он универсален, хотя, безусловно, на локальном сервере без подключения к Интернету Вы не сможете протестировать данный скрипт:

<?php
  if( $curl = curl_init() ) {
    $ip = $_SERVER["REMOTE_ADDR"];
    curl_setopt($curl, CURLOPT_URL, 'http://ip-whois.net/ip_geo.php?ip='.$ip);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    $out = curl_exec($curl);
    $matches = array();
    $country = preg_match_all("/Страна: (.*)/i", $out, $matches);
    print_r($matches[1][1]);
    curl_close($curl);
}
?>

Кратко принцип: находим сервис, смотрим, как надо отправлять запрос (как называются переменные, каким методом отправляются), отправляем через cURL запрос, получаем ответ, вытаскиваем нужную строку через регулярные выражения, выводим результат. Если Вы запустите этот скрипт, то увидите название страны, которой принадлежит Ваш IP-адрес. Однако, стоит отметить, что далеко не для каждого IP-адреса возможно узнать страну. Тут зависит от базы, которую использует конкретный WHOIS-сервис. Сразу скажу, что для тестирования этого скрипта надо его загрузить на удалённый сервер, чтобы не подставлялся IP-адрес: 127.0.0.1, так как он не сработает, ведь для него страны не сущесвует. Либо же просто замените значение переменной $ip на какой-нибудь другой IP-адрес. Как видите, всё очень просто, главное, здесь чётко выбрать один из двух способов. Если Вы захотите узнавать страну по IP-адресу через свою базу данных, то тогда Вам надо её предварительно найти. Их достаточно много, поэтому просто поищите их в Интернете. А если Вас устраивает пользоваться WHOIS-сервисом и экономить ресурсы своего сервера и место в базе данных, то тогда можете использовать код выше, а, доработав регулярное выражение, Вы можете вытащить и другие данные, которые выдаёт данный сервис, например, город.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (20):

Sprat Sprat 10.05.2012 10:51:05

Прошу заметить, что значение $matches[1][1] возвращается к пользователю со значением "<br>" (Например - Russian Federation<br>) Поэтому сравнивать данное значение с постоянной константой не получится.

Ответить

sashajk sashajk 04.03.2013 17:50:36

Что означает эта запись: "if( $curl = curl_init() )" ? По этому примеру мне выдает ошибку: "Fatal error: Call to undefined function curl_init() "

Ответить

Admin Admin 04.03.2013 21:20:17

http://myrusakov.ru/php-curl-denwer.html

Ответить

remox remox 24.06.2013 22:21:51

Михаил, подскажите пожалуйста, как сделать, что блоки по клику сворачиваются - слева колонка - круто) JQuery?

Ответить

Admin Admin 25.06.2013 10:36:34

http://myrusakov.ru/skrytyj-tekst-javascript.html

Ответить

remox remox 25.06.2013 12:35:45

Спасибо) а как делается так, чтоб комментарии лесенкой располагались?

Ответить

Admin Admin 25.06.2013 12:40:12

Через CSS, каждый внутренний ul содержит дополнительный margin-left.

Ответить

remox remox 25.06.2013 18:30:33

понимаю, что css, тег ul знаком, свойство margin-left также знакомо, непонимаю алгоритма реализации такой фишки =\

Ответить

Admin Admin 25.06.2013 21:02:45

<ul><li><ul><li><ul> - и так далее. И в CSS ul {margin-left: 20px;}

Ответить

remox remox 26.06.2013 00:39:20

благодарю) буду пробовать - может и получится у меня))

Ответить

Nick383 Nick383 01.07.2013 17:14:35

Михаил, как дальше завязать результат и страницы мультиязычного сайта? Сайт на DLE имеет три языковых версии рус,нем и анг. как определить страну и вывести нужную версию сайта?

Ответить

Admin Admin 01.07.2013 19:06:20

Не работаю с готовыми движками: http://myrusakov.ru/php-engine-vs-null.html

Ответить

Nick383 Nick383 02.07.2013 10:14:07

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

Ответить

Admin Admin 02.07.2013 10:19:21

Разница не просто есть, она бесконечно огромная. И раз Вы задаёте этот вопрос, то это и есть разница. Нет никаких кодов. Вам нужны расширения.

Ответить

kyp4ak kyp4ak 12.05.2014 08:45:21

Страну не правильно выводит, почему?

Ответить

tikkiwiki tikkiwiki 13.05.2014 09:29:44

Может потому, что интернет у пользователя через прокси.

Ответить

Orendev Orendev 09.06.2015 10:48:55

Как можно реализовать на сайте вывод контента для каждого региона свой.

Ответить

daniil264 daniil264 26.06.2016 16:53:37

А это точно не устаревший скрипт? я новичок в пхп просто если ввести в браузер http://ip-whois.net/ip_geo.php?ip=123.32.45 (например), то сервис пишет, что страницы не существует к примеру я подставлял свой правильный ip тоже

Ответить

chiz22 chiz22 24.07.2017 17:53:16

Скрипт устаревший. Теперь не ip_geo.php, а ip_geos.php. Ну типа так http://ip-whois.net/ip_geos.php?ip=123.32.45.21. Но скрипт все равно не работает. Видать название полей изменили.

Ответить

eriskay eriskay 08.01.2018 13:19:47

Скрипт в принципе рабочий, нужно только подменить ip_geo.php на а ip_geos.php, другое дело, что он не оптимален. Как по мне, достаточно вот такого краткого кода, специально добавил комментарии чтобы всем было ясно: /** * Узнаем IP адресс пользователя */ $ip = $_SERVER['REMOTE_ADDR']; /** * Получаем информацию относительно IP * (страна, город и другая информация */ $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json")); /* Выводим информацию о IP */ echo $details->ip; echo $details->hostname; echo $details->city; echo $details->region; echo $details->country; echo $details->loc; echo $details->org; echo $details->postal;

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.