Php ip адрес: Как в PHP узнать IP пользователя и определить его страну?
Как узнать IP-адрес посетителя через PHP
Вы здесь:
Главная — PHP — PHP Основы — Как узнать IP-адрес посетителя через PHP
Один из самых частых вопросов, которые мне довелось слышать — это «как узнать IP-адрес посетителя через PHP«. Несмотря на всю простоту этой задачи, люди, тем не менее, это спрашивают. Как правило, это новички, которым PHP изучать не нужно, а нужен лишь какой-то скрипт, который будет выполнять определённую их задачу, в частности, узнавать IP-адрес посетителя. И в этой статье я этот код и дам.
Чтобы узнать IP-адрес посетителя сайта нужно написать всего лишь одну строку в скрипте:
<?php
echo $_SERVER["REMOTE_ADDR"];
?>
Если Вы запустите этот скрипт, то узнаете свой IP-адрес. Как видите, всё просто! А в одной из следующих статей я расскажу, как узнать по IP-адресу, из какой страны пришёл человек на сайт.
-
Создано 14.03.2011 19:58:36 -
Михаил Русаков
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov. ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Как определить IP-адрес компьютера клиента
От автора: Идею для этого урока я взял из комментариев пользователей ресурса //webformyself.com/. В частности, интересовал такой вопрос: «Как определить IP-адрес компьютера?». Попробуем разобраться, как это можно сделать, и заодно узнаем еще несколько вещей, которые, безусловно, могут пригодиться Вам в создании веб-приложений.
Время ролика: 19:50
Ссылка для скачивания исходников: Скачать одним архивом
Ссылка для скачивания всего архива (видео+исходники): Скачать одним архивом. Размер: 33.1 mb.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Итак сразу скажу, для того чтобы понять как определить IP-адрес, много кода писать не придется ибо все уже написано до нас. Нам же остается просто знать, как это использовать. Под «этим» в данном случае понимается суперглобальный массив $_SERVER, в который интерпретатор PHP помещает переменные, полученные от сервера. О том, что такое массив, я подробно рассказываю и показываю в уроке по созданию галереи. Вкратце можно сказать, что массив — это своеобразная большая переменная, в которой можно хранить обычные переменные. Переменных в глобальном массиве $_SERVER довольно много. Мы же сегодня поговорим лишь о некоторых из них. Эти переменные, кстати, еще называются также элементами массива. И первые два элемента, о которых мы поговорим — это элементы, благодаря которым можно получить имя сервера, на котором выполняется скрипт.
1. Имя сервера
Создадим страницу (у меня это index.php) и напишем в нее следующий код:
<?php
echo $_SERVER[‘SERVER_NAME’];
?>
<?php echo $_SERVER[‘SERVER_NAME’]; ?> |
Здесь мы выводим на экран элемент массива $_SERVER по имени SERVER_NAME, в котором как раз и содержится информация о сервере. Если Вы тестируете скрипт на локальном сервере, то в качестве имени сервера получим — «localhost».
Аналогичный результат можно получить при обращении к элементу HTTP_HOST:
<?php
echo $_SERVER[‘HTTP_HOST’];
?>
<?php echo $_SERVER[‘HTTP_HOST’]; ?> |
Где может пригодиться использование этих элементов массива $_SERVER?. Допустим, у нас есть сайт на домене //mydomen.ru. Соответственно, если на этом сайте используются абсолютные ссылки, то мы столкнемся с определенными трудностями при переносе сайта на новый домен, к примеру, //newdomen. ru. Нам придется менять все абсолютные ссылки. Вот здесь нам как раз и могут пригодиться эти элементы.
2. Откуда пришел пользователь
Часто нам необходимо узнать с какой именно страницы к нам попал пользователь. В этом нам может помочь элемент по имени HTTP_REFERER. В этом элементе как раз и содержится адрес страницы, с которой пользователь попал на страницу, на которой мы вызываем элемент HTTP_REFERER. Переход, соответственно, должен происходить по ссылке. Создадим еще одну страницу, например test.php, и в ней пропишем ссылку на страницу index.php. На странице index.php пропишем код:
<?php
echo $_SERVER[‘HTTP_REFERER’];
?>
<?php echo $_SERVER[‘HTTP_REFERER’]; ?> |
Теперь попробуем перейти по ссылке. В своем случае я получу такой адрес страницы — //localhost/arr_server/test.php (обе страницы у меня в каталоге arr_server, а сам скрипт тестируется на локальном сервере).
3. Информация о клиенте
Если нам необходимо собирать статистическую информация, например, пользователи с какими браузерами посещают наш сайт, то мы можем использовать для этих целей элемент HTTP_USER_AGENT:
<?php
echo $_SERVER[‘HTTP_USER_AGENT’];
?>
<?php echo $_SERVER[‘HTTP_USER_AGENT’]; ?> |
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
В результате на экран в моем случае будет выведена строка — «Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.15) Gecko/20110303 AskTbPTV2/3.9.1.14019 Firefox/3.6.15″. Из нее можно узнать, что я использую браузер Firefox версии 3.6.15. Также можно узнать, что версия моей операционной системы — Windows XP — об этом говорит эта часть строки — Windows NT 5. 1.
Определение IP-адреса клиента
А теперь собственно то, для чего мы и затеяли данный урок — определение IP-адреса компьютера пользователя, заполнявшего нашу форму. Информация об этом адресе содержится в элементе REMOTE_ADDR:
<?php
echo $_SERVER[‘REMOTE_ADDR’];
?>
<?php echo $_SERVER[‘REMOTE_ADDR’]; ?> |
Если Вы тестирует скрипт на локальном сервере, то получите такой IP-адрес — 127.0.0.1. Если тестируете в сети — получите IP-адрес, под которым зашли в сеть. Как же нам передать IP-адрес клиента, который заполнял форму? Сам он его, конечно же, вряд ли вводить будет, поэтому нам остается определить этот адрес при помощи элемента REMOTE_ADDR массива $_SERVER и скрытно от клиента отослать его. Сделать это можно несколькими способами. Мы будем использовать скрытое поле формы. Создадим простую форму на странице test.php:
<form method=»post» action=»index. php»>
<input type=»text» name=»name» />
<input type=»submit» name=»submit» />
</form>
<form method=»post» action=»index.php»> <input type=»text» name=»name» /> <input type=»submit» name=»submit» /> </form> |
Данные из этой формы будут передаваться методом POST, в качестве обработчика данных мы указали файл index.php (детально обо всем этом я рассказываю в мини-курсе по созданию полноценной формы обратной связи). На странице index.php давайте будем принимать эти данные и выводить их:
<?php
if($_POST[‘submit’]){
echo ‘Введено имя: ‘ .$_POST[‘name’]. ‘<br />’;
echo ‘<a href=»‘ .$_SERVER[‘HTTP_REFERER’]. ‘»>Назад</a>’;
}
?>
<?php if($_POST[‘submit’]){ echo ‘Введено имя: ‘ .$_POST[‘name’]. ‘<br />’; echo ‘<a href=»‘ .$_SERVER[‘HTTP_REFERER’]. ‘»>Назад</a>’; } ?> |
Здесь мы проверили, была ли нажата кнопка формы и, если она нажата, мы выводим то, что получили в качестве имени. А ниже мы прописали ссылку на ту страницу, откуда пришли, т.е., на страницу с формой. Об условиях, глобальном массиве $_POST и прочих вещах, которые мы только что использовали, я также детально рассказывал в мини-курсе по созданию формы обратной связи. Мы все делаем максимально упрощенно, без особых проверок, поскольку целью урока является простая передача IP-адреса клиента и не больше.
Итак, имя мы получаем. Теперь осталось передать скрытно от пользователя его IP-адрес. Для этого допишем на странице с формой еще одно поле, типом которого укажем hidden (т.е., скрытое), а в качестве его значения укажем элемент REMOTE_ADDR:
<form method=»post» action=»index.php»>
<input type=»text» name=»name» />
<input type=»hidden» name=»ip» value=»<?php echo $_SERVER[‘REMOTE_ADDR’]; ?>» />
<input type=»submit» name=»submit» />
</form>
<form method=»post» action=»index. php»> <input type=»text» name=»name» /> <input type=»hidden» name=»ip» value=»<?php echo $_SERVER[‘REMOTE_ADDR’]; ?>» /> <input type=»submit» name=»submit» /> </form> |
Если мы сейчас обновим страницу с формой, то ничего не изменится… но если мы посмотрим исходный код этой страницы, то увидим следующее:
<form method=»post» action=»index.php»>
<input type=»text» name=»name» />
<input type=»hidden» name=»ip» value=»127.0.0.1″ />
<input type=»submit» name=»submit» />
</form>
<form method=»post» action=»index.php»> <input type=»text» name=»name» /> <input type=»hidden» name=»ip» value=»127.0.0.1″ /> <input type=»submit» name=»submit» /> </form> |
Интерпретатор PHP в качестве значения скрытого поля прописал IP-адрес клиента, который и будет отправлен на страницу index. php, и этот адрес будет находиться в переменной ip глобального массива $_POST. Осталось дописать вывод в файле index.php:
<?php
if($_POST[‘submit’]){
echo ‘Введено имя: ‘ .$_POST[‘name’]. ‘<br />’;
echo ‘IP пользователя: ‘ .$_POST[‘ip’]. ‘<br />’;
echo ‘<a href=»‘ .$_SERVER[‘HTTP_REFERER’]. ‘»>Назад</a>’;
}
?>
<?php if($_POST[‘submit’]){ echo ‘Введено имя: ‘ .$_POST[‘name’]. ‘<br />’; echo ‘IP пользователя: ‘ .$_POST[‘ip’]. ‘<br />’; echo ‘<a href=»‘ .$_SERVER[‘HTTP_REFERER’]. ‘»>Назад</a>’; } ?> |
Вот, в принципе, и все. Вот так вот просто при помощи элементов массива $_SERVER мы можем получить массу служебной информации, которую затем можем использовать в своих веб-приложениях. Мы рассмотрели только пять элементов массива $_SERVER, на самом деле их, как уже говорилось выше, гораздо больше и без них часто сложно организовать функционирование достаточно серьезного проекта.
На этом, урок по определению IP-адреса компьютера окончен. До новых встреч!
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Хотите узнать, что необходимо для создания сайта?
Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!
Смотреть
Как nginx обрабатывает запросы
Как nginx обрабатывает запросы
Определение виртуального сервера по имени
nginx вначале решает, какой из серверов должен обработать запрос.
Рассмотрим простую конфигурацию,
где все три виртуальных сервера слушают на порту *:80:
server { listen 80; server_name example.org www.example.org; ... } server { listen 80; server_name example.net www.example.net; ... } server { listen 80; server_name example. com www.example.com; ... }
В этой конфигурации, чтобы определить, какому серверу следует направить
запрос, nginx проверяет только поле “Host” заголовка запроса.
Если его значение не соответствует ни одному из имён серверов
или в заголовке запроса нет этого поля вовсе,
nginx направит запрос в сервер по умолчанию для этого порта.
В вышеприведённой конфигурации сервером по умолчанию будет первый сервер,
что соответствует стандартному поведению nginx по умолчанию.
Сервер по умолчанию можно задать явно с помощью параметра
default_server
в директиве
listen:
server { listen 80 default_server; server_name example.net www.example.net; ... }
Параметр
default_server
появился в
версии 0.8.21.
В более ранних версиях вместо него следует использовать параметр
default
.
Следует иметь в виду, что сервер по умолчанию является свойством
слушающего порта, а не имени сервера.
Подробнее это обсуждается ниже.
Как предотвратить обработку запросов без имени сервера
Если запросы без поля “Host” в заголовке не должны
обрабатываться, можно определить сервер, который будет их отклонять:
server { listen 80; server_name ""; return 444; }
Здесь в качестве имени сервера указана пустая строка, которая
соответствует запросам без поля “Host” в заголовке,
и возвращается специальный для nginx код 444, который закрывает
соединение.
Начиная с версии 0.8.48 настройка
server_name ""
является стандартной и может явно не указываться.
В более ранних версиях в качестве стандартного имени сервера
выступало имя машины (hostname).
Определение виртуального сервера по имени и IP-адресу
Рассмотрим более сложную конфигурацию,
в которой некоторые виртуальные серверы слушают на разных адресах:
server { listen 192.168.1.1:80; server_name example. org www.example.org; ... } server { listen 192.168.1.1:80; server_name example.net www.example.net; ... } server { listen 192.168.1.2:80; server_name example.com www.example.com; ... }
В этой конфигурации nginx вначале сопоставляет IP-адрес и порт
запроса с директивами
listen
в блоках
server.
Затем он сопоставляет значение поля “Host”
заголовка запроса с директивами
server_name
в блоках
server,
которые соответствуют IP-адресу и порту.
Если имя сервера не найдено, запрос будет обработан в
сервере по умолчанию.
Например, запрос www.example.com
, пришедший на порт
192.168.1.1:80, будет обработан сервером по умолчанию для порта
192.168.1.1:80, т.е. первым сервером, т.к. для этого порта
www.example.com
не указан в списке имён серверов.
Как уже говорилось, сервер по умолчанию является свойством слушающего порта,
поэтому у разных портов могут быть определены свои серверы по умолчанию:
server { listen 192. 168.1.1:80; server_name example.org www.example.org; ... } server { listen 192.168.1.1:80 default_server; server_name example.net www.example.net; ... } server { listen 192.168.1.2:80 default_server; server_name example.com www.example.com; ... }
Конфигурация простого сайта PHP
Теперь посмотрим на то, как nginx выбирает location
для обработки запроса на примере обычного простого PHP-сайта:
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
nginx вначале ищет среди всех префиксных location’ов, заданных строками,
максимально совпадающий.
В вышеприведённой конфигурации
указан только один префиксный location “/
”, и поскольку
он подходит под любой запрос, он и будет использован, если других
совпадений не будет найдено.
Затем nginx проверяет location’ы, заданные регулярными выражениями, в
порядке их следования в конфигурационном файле.
При первом же совпадении поиск прекращается и nginx использует
совпавший location.
Если запросу не соответствует ни одно из регулярных выражений,
nginx использует максимально совпавший префиксный location,
найденный ранее.
Следует иметь в виду, что location’ы всех типов сопоставляются только с
URI-частью строки запроса без аргументов.
Так делается потому, что аргументы в строке запроса могут быть
заданы различными способами, например:
/index.php?user=john&page=1 /index.php?page=1&user=john
Кроме того, в строке запроса можно запросить что угодно:
/index.php?page=1&something+else&user=john
Теперь посмотрим, как бы обрабатывались запросы
в вышеприведённой конфигурации:
- Запросу “
/logo. gif
” во-первых соответствует префиксный
location “/
”, а во-вторых — регулярное выражение
“\.(gif|jpg|png)$
”,
поэтому он обрабатывается location’ом регулярного выражения.
Согласно директиве “root /data/www
” запрос
отображается в файл/data/www/logo.gif
, который
и посылается клиенту. - Запросу “
/index.php
” также во-первых соответствует префиксный
location “/
”, а во-вторых — регулярное выражение
“\.(php)$
”.
Следовательно, он обрабатывается location’ом регулярного выражения
и запрос передаётся FastCGI-серверу, слушающему на localhost:9000.
Директива
fastcgi_param
устанавливает FastCGI-параметр
SCRIPT_FILENAME
в “/data/www/index.php
”,
и сервер FastCGI выполняет указанный файл.
Переменная$document_root
равна
значению директивы
root,
а переменная$fastcgi_script_name
равна
URI запроса, т.е. “/index.php
”. - Запросу “
/about. html
” соответствует только префиксный
location “/
”, поэтому запрос обрабатывается в нём.
Согласно директиве “root /data/www
” запрос
отображается в файл/data/www/about.html
, который
и посылается клиенту. - Обработка запроса “
/
” более сложная.
Ему соответствует только префиксный location “/
”,
поэтому запрос обрабатывается в нём.
Затем директива
index
проверяет существование индексных файлов согласно своих параметров
и директиве “root /data/www
”.
Если файл/data/www/index.html
не существует,
а файл/data/www/index.php
существует, то
директива делает внутреннее перенаправление на “/index.php
”
и nginx снова сопоставляет его с location’ами,
как если бы такой запрос был послан клиентом.
Как мы видели ранее, перенаправленный запрос будет в конечном итоге
обработан сервером FastCGI.
автор: Игорь Сысоев редактор: Brian Mercer |
Город по IP-адресу
↑ Все API
✔️ Определяет город по IP-адресу в России. Использует IP-адрес клиента, значение из параметра ip
или заголовок X-Forwarded-For
.
✔️ Поддерживает как IPv4, так и IPv6 адреса.
✔️ Возвращает детальную информацию о городе, в том числе почтовый индекс.
Как вызвать
Чтобы вызвать метод, зарегистрируйтесь и подтвердите почту.
Пример запроса:
Параметры запроса
Название | Тип | Обяз.? | По умолч. | Описание |
---|---|---|---|---|
ip | string | ✓ | IP-адрес | |
language | string | ru | На каком языке вернуть результат (ru / en) |
Что в ответе
Ответ:
{ "location": { "value": "г Краснодар", "unrestricted_value": "350000, Краснодарский край, г Краснодар", "data": { "postal_code": "350000", "country": "Россия", "country_iso_code": "RU", "federal_district": "Южный", "region_fias_id": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8", "region_kladr_id": "2300000000000", "region_iso_code": "RU-KDA", "region_with_type": "Краснодарский край", "region_type": "край", "region_type_full": "край", "region": "Краснодарский", "area_fias_id": null, "area_kladr_id": null, "area_with_type": null, "area_type": null, "area_type_full": null, "area": null, "city_fias_id": "7dfa745e-aa19-4688-b121-b655c11e482f", "city_kladr_id": "2300000100000", "city_with_type": "г Краснодар", "city_type": "г", "city_type_full": "город", "city": "Краснодар", . .. } } }
Если город не удалось определить, ответ будет таким:
{ "location": null }
Точность определения города
Определение города по IP-адресу — не слишком надёжный способ. Точность составляет 60–80%. Если «Дадата» неправильно определила город или не определила его вовсе — сообщите об этом через специальную форму. Мы исправляем ошибки ежемесячно.
Как не исчерпать лимит запросов
Если просто подключить API «город по IP» на сервере, можно очень быстро выйти за бесплатный лимит в 10 000 запросов в сутки. Причины у этого две:
- Когда человек ходит по страницам сайта, каждая страница заново пытается определить город.
- Большое количество запросов генерируют поисковые боты (Яндекс, Гугл, Бинг).
Чтобы решить обе проблемы, мы рекомендуем:
- Запоминать результат, который вернула «Дадата» — и не делать повторных вызовов на других страницах.
- Вызывать API из браузера, а не с сервера — это защитит от ботов.
Примеры вызова
Ограничения
Длина запроса (параметр query
) — не более 300 символов.
Количество запросов в день — в соответствии с тарифным планом.
Максимальная частота запросов — 20 в секунду.
Максимальная частота создания новых соединений — 60 в минуту.
Стоимость
Метод бесплатный до 10 000 запросов в день. Больше — в составе годовой подписки.
Как узнать ip пользователя и страницу, с которой перешел пользователь в PHP
Язык программирования PHP позволяет нам не только создавать сложные программы, но и частично следить за пользователем. Так, используя элементы супер массива $_SERVER мы можем узнать не только ip пользователя и его браузер, но и страницу, с которой он перешел на ваш сайт.
Последнее бывает крайне удобным, например, при аналитике сайта или для добавления этой информации в форму обратной связи нашего сайта. За счет чего мы всегда будем знать откуда пришел пользователь (с какой страницы отправлена заявка) и его ip адрес, по которому, кстати, можно определить его город.
Итак, чтобы определить ip адрес используйте команду $_SERVER[‘REMOTE_ADDR’]. Например: <?php echo $_SERVER[‘REMOTE_ADDR’]; ?>. Если мне нужно получить ip пользователя, то я обычно вставляю данную конструкцию в невидимый input, где его значение передается с формой. Пример: <input type=»hidden» value=»<?php echo $_SERVER[‘REMOTE_ADDR’]; ?>» name=»ipuser»>
Чтобы получить ссылку, с которой пользователь зашел на ваш сайт, используйте: $_SERVER[‘HTTP_REFERER’]. Пример: <?php echo $_SERVER[‘HTTP_REFERER’]; ?>. Но учтите, если вы напрямую откроете страницу, в которой будет находиться этот код, то ничего не выведется, так как перехода нет. А если будет такая ситуация: предположим, что есть страница 1 (в которой код и страница 2) — вы нажимаете на ссылку в странице 2, которая переадресует вас на страницу 1. В этом случае страница 1 выведет информацию, что вы перешли со страницы 2. Эту переменную я обычно использую для того, чтобы узнавать с какой страницы мне написали.
Информацию о браузере пользователя вы можете узнать используя элемент $_SERVER[‘HTTP_USER_AGENT’]. В нем подробно описаны данные операционки пользователя и его текущего браузера.
Читайте также
blogprogram.ru | 2016-10-26 | Как узнать ip пользователя и страницу, с которой перешел пользователь в PHP | Язык программирования PHP позволяет нам не только создавать сложные программы, но и частично следить за пользователем. Так, используя элементы супер м | http://blogprogram.ru/wp-content/uploads/2016/09/3213123121-131×131.jpg
Простой скрипт блокировки скачивания всего сайта — 1GbWiki
Материал из 1GbWiki.
Скрипт написан для решения проблем клиентов хостинг-провайдера www.1Gb.ru
связанных с нагрузкой на сервер в результате попыток скачать сайт полностью
программой скачивания сайта. Архив со скриптом можно взять по ссылке
http://dmach. ru/prog/wgetblock/wgetblock.rar.
В страницу сайта вы размещаете скрытую ссылку таким образом, что «живой»
человек никогда не неё не кликнет. Программа скачивания сайта не знает о
такой хитрости и обходит все ссылке в коде сайта даже если они оформлены
таким образом, что визуально на странице не видны. Когда программа которая
обходит ваш сайт попадает на такой скрытый скрипт то скрипт точно знает,
что источник запроса можно блокировать — он создаёт инструкцию по блокировке
и помещает её в скрипт который прописан для всех страниц сайта записывая
туда ip-адрес источника атаки. Далее при обработке последующих запросов
программа доходит только до кода блокировщика, который прекращает выполнение
запроса по признаку соответствия ip-адреса источника и своей базы с «плохими»
адресами.
Недостатки:
- Если человек который пытается скачать ваш сайт знает об этой защите — ему не составит труда её обойти указав в настройке программы игнорирование скрытого скрипта-уловителя.
- Если источник производит запросы к сайту с разных ip-адресов такая хитрость не будет эффективной.
- Текущая реализация работает только с PHP, если вы используете другие технологии, то оно вам не подойдёт. Однако, не составляет труда написать то же самое под это другое.
Некоторые достоинства:
- Скрипт очень простой, вы можете модифицировать его по своему желанию для ваших потребностей или использовать в неизменном виде.
- Скрипт может отсылать уведомления на почтовый адрес при блокировках.
[править] Инструкция по установке
Для установки нужно выполнить следующие действия:
- Подключить блокирующий модуль в скрипты сайта
- Создать скрытую ссылку на модуль уловитель.
Испытания скрипта были проведены для программ Teleport Pro
и wget — обе программы были успешно
блокированы.
[править] Подробное описание
[править] Блокировщик (по умолчанию — block.php)
Код вызова блокирующего скрипта должен быть вписан в скрипт php который
подключается для всех обращений к сайту или к требуемой группе скриптов.
Например, вы можете разместить его в файле index.php, если все обращения
на сайт идут через него или в файл config.php если он подключается для
всех скриптов сайта.
Пример подключения блокирующего модуля:
<?php include '/home/virtwww/w_site_715a5517/http/block.php'; ?>
[править] Уловитель (по умолчанию — catch.php)
Уловитель вам нужно разместить таким образом, что бы живой человек не мог
попасть на скрипт с ним, это можно сделать, к примеру, пустой ссылкой:
<a href='catch.php'></a>
Что бы обойти вариант, когда человек инициирует повторную скачку сайта
постарайтесь видоизменять ссылку каждый раз при обращении к странице, например
дописывая какой-нибудь параметр средствами того же php:
<?php print "<a href='catch.php?p=".rand(1, 100)."'></a>"; ?>
Если ожидать от программы скачивания сайта повышенного интеллекта — что она не
будет открывать пустые ссылки (вдруг кто такое напишет), можно усложнить
ссылку скрыв её при помощи CSS а не пустого тела. Например, так:
<?php print "<a href='catch.php?p=".rand(1, 100)."'>My photo</a>"; ?>
Можно использовать так же любые другие методы что бы скрыть ссылку на
уловитель, например размещать кликабельный элемент очень маленького размера
в неожиданном месте и тому подобное.
Скрипт-уловитель конфигурируется путём задания нужных параметров в теле
скрипта. Единственный обязательный параметр — $blockScriptPath, полный
физический путь к скрипту-блокировщику.
[править] Меры предосторожности
Так как есть вероятность, что на данный скрипт попадёт какая либо поисковая
система (например Яндекс) и тем самым будет блокирована — нужно принять меры
предосторожности против этого. В качестве одной из мер — размещение файла
robots.txt запрещающего индексировать скрипт-уловитель. Пример инструкций
файла robots.txt ниже:
User-agent: * Disallow: /catch.php
Если же поисковая система проигнорирует директивы файла robots.txt и
попадётся в скрипт-уловитель. Чтож, сама виновата. В любом случае, вы сможете
получить уведомление на электронную почту и быстро снять блокировку.
[править] Дополнительные замечания
- Фишка скрипта в отсутствии базы данных где хранятся ip-адреса. Скрипт-уловитель напрямую сам пишет скрипт-блокировщик (вы так же можете редактировать его вручную). Это повышает эффективность решения.
- Вы можете свободно переименовывать файлы скриптов что бы придать им менее очевидные имена.
- Вы можете размещать несколько скриптов-уловителей в разных местах и по разному заданных усложняя ручной обход защиты.
- Если вы будете вручную редактировать скрипт-блокировщик — не дописывайте в него закрывающую конструкцию PHP — ?>, это приведёт к некорректной работе скрипта в целом.
[править] Обновления скрипта
- 08.08.2007 — Первая версия
- 12.08.2008 — В высылаемое на почту сообщение добавлена ифнормация о домене сайта
[править] Варианты для других технологий
Так же пользователями хостинга 1Gb. ru были написаны реализации скрипта для других скриптовых технологий:
3 популярных VPN-сервиса выдают IP-адреса пользователей
3 популярных VPN-сервиса выдают IP-адреса пользователей
Alexander Antipov
Уязвимости в сервисах позволяют идентифицировать пользователя и определить его местоположение.
Специалисты сайта VPNMentor обнаружили , что три популярных VPN-сервиса допускают утечки данных о конкретных пользователях, которые могут быть использованы для их идентификации. В частности, речь идет о сервисах Hotspot Shield, Zenmate и PureVPN.
VPN или виртуальная частная сеть позволяет просматривать трафик через другие серверы, затрудняя идентификацию пользователя. VPN-сети популярны в некоторых частях мира, где доступ в Интернет ограничен или цензурирован. Зачастую трафик зашифровывается таким образом, что интернет-провайдеры и даже сами сервисы VPN не имеют к нему доступа.
Однако в ходе исследования в сервисах были обнаружены уязвимости, которые могут привести к утечке реальных IP-адресов и в некоторых случаях позволить идентифицировать отдельных пользователей и определить их местоположение.
В случае с Hotspot Shield три уязвимости были обнаружены в расширении для браузера Chrome, а именно в механизме обработки скриптов автоматической конфигурации с помощью прокси-сервера. Проблемы позволяют выявить IP-адреса пользователей и адреса DNS.
Другая уязвимость могла позволить злоумышленнику перехватить и перенаправить web-трафик на прокси-сервер, обманом заставив пользователя перейти по вредоносной ссылке.
В настоящее время разработчик Hotspot Shield компания AnchorFree уже исправила проблемы, отметив, что они затрагивают только расширение для браузера.
Исследователи также сообщили об аналогичных проблемах в сервисах Zenmate и PureVPN. По словам представителей PureVPN, компания уже исправила уязвимости в сервисе. Представители Zenmate никак не прокомментировали ситуацию.
Мы рассказываем о самых актуальных угрозах и событиях, которые оказывают влияние на обороноспособность стран, бизнес глобальных корпораций и безопасность пользователей по всему миру в нашем Youtube выпуске.
Поделиться новостью:
Безопасность
— PHP самый точный / безопасный способ получить реальный IP-адрес пользователя в 2017 году
Во-первых, невозможно надежно определить чей-либо исходный IP-адрес, если они намереваются быть скрытыми. Даже в том, что сегодня кажется надежным, скоро появится лазейка (если ее еще нет). Таким образом, любой ответ ниже следует рассматривать как НЕ ДОВЕРЕННЫЙ , что означает, что если вы положите все свои яйца в эту корзину, будьте готовы к тому, что кто-то воспользуется этим или каким-то образом обойдет его.
Я не буду подробно рассказывать обо всех способах обхода IP-отслеживания, потому что
он постоянно развивается. Я скажу, что это может быть полезным инструментом для ведения журнала, если вы знаете, что IP-адреса могут легко изменяться или иным образом маскироваться.
Теперь важно отметить разницу между публичным IP-адресом и частным IP-адресом. В IPV4 маршрутизаторам обычно назначается один общедоступный IP-адрес, и это все, что серверный язык может фактически захватить, потому что он не видит ваш клиентский IP-адрес.Для сервера ваш компьютер не существует как веб-пространство. Вместо этого все, что имеет значение, — это ваш маршрутизатор. В свою очередь, ваш маршрутизатор — единственное, что заботится о вашем компьютере, и он назначает частный IP-адрес (которому принадлежит ваш адрес 172. . . *) Для выполнения этой работы. Это хорошо для вас, потому что вы не можете напрямую получить доступ к компьютеру за маршрутизатором.
Если вы хотите получить доступ к частному IP-адресу, вам необходимо использовать JavaScript (язык на стороне клиента). Затем вы можете хранить данные асинхронно через AJAX.Насколько мне известно, в настоящее время это возможно только при использовании Chrome и Firefox с поддержкой WebRTC. Смотрите здесь демо.
Я тестировал это, и он возвращает частные IP-адреса. Обычно я думаю, что это используется рекламодателями для отслеживания отдельных пользователей в сети в сочетании с общедоступным IP-адресом. Я уверен, что это быстро станет бесполезным, поскольку люди придумают обходные пути или когда общественный резонанс заставит их предложить возможность отключить API WebRTC. Однако пока это работает для всех, у кого включен JavaScript в Chrome и Firefox.
Подробнее Чтение:
PHP | Определение IP-адреса клиента
PHP | Определение IP-адреса клиента
Что такое IP-адрес?
IP-адрес означает адрес интернет-протокола. IP-адрес используется для идентификации сетевого устройства. IP-адреса позволяют определять местоположение различных цифровых устройств, подключенных к Интернету, и отличать их от других устройств.
В этом посте мы обсудили два различных способа определения IP-адреса клиента из сценария PHP, как описано ниже:
- Использование функции getenv () : для получения IP-адреса мы используем getenv («REMOTE_ADDR» ) команда.
Функция getenv () в PHP используется для получения значений переменной среды в PHP.
Используется для возврата значения определенной переменной среды.Синтаксис:
Php
$ ipaddress
=
getenv
(
"REMOTE_ADDR"
);
Echo
«Ваш IP-адрес»
.
$ ipaddress
;
?>
Выход:
Ваш IP 127.1.1.0
- Определение IP-адреса с помощью $ _SERVER Variable Method : Есть другой способ получить IP-адрес с помощью с использованием переменных $ _SERVER ['REMOTE_ADDR'] или $ _SERVER ['REMOTE_HOST'] . Переменная в массиве $ _SERVER создается веб-сервером, например apache, и их можно использовать в PHP.
Обычно $ _SERVER [‘REMOTE_ADDR’] дает IP-адрес, с которого запрос был отправлен на веб-сервер.Синтаксис:
Php
$ ipaddress
=
$ _SERVER
[
'REMOTE_ADDR'
]
9 8.
$ ipaddress
;
?>
Выход:
Ваш IP 127.1.1.0
PHP: $ _SERVER - Руководство
Руководство по абсолютным путям ...
Данные: __FILE__
Тип данных: Строка
Назначение: Абсолютный путь к запущенному файлу PHP, включая имя файла.
Предостережение: это не тот файл, который вызывается процессором PHP, это то, что работает. Итак, если вы находитесь внутри include, это include.
Предупреждение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предупреждение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: __DIR__
Тип данных: Строка
Цель: Абсолютный путь к запущенному файлу PHP, исключая имя файла
Предостережение: это не тот файл, который вызывается PHP-процессор, это то, что работает. Итак, если вы находитесь внутри include, это include.
Предупреждение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предупреждение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: $ _SERVER ['SCRIPT_FILENAME']
Тип данных: Строка
Цель: Абсолютный путь к исходному файлу PHP, включая имя файла
Предостережение: не установлено во всех средах PHP может потребоваться настройка путем копирования из __FILE__ перед включением других файлов.
Предостережение: символические ссылки предварительно не разрешаются, используйте функцию PHP realpath, если вам нужно ее разрешить.
Предупреждение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Предупреждение: «Имя файла» заставляет вас думать, что это просто имя файла, но на самом деле это полный абсолютный путь. Считайте идентификатор как «Имя файловой системы (путь) скрипта».
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: $ _SERVER ['PATH_TRANSLATED']
Тип данных: String
Цель: Абсолютный путь к исходному файлу PHP, включая имя файла
Предостережение: вероятно не установлен, лучше просто не использовать. Просто используйте realpath ($ _ SERVER ['SCRIPT_FILENAME']) (и имейте в виду, что может потребоваться эмуляция самого файла).
Предупреждение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предупреждение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Нет
Данные: $ _SERVER ['DOCUMENT_ROOT']
Тип данных: Строка
Цель: Получить абсолютный путь к корню документа веб-сервера. Без косой черты в конце.
Предостережение: не верьте, что это будет установлено или установлено правильно, если вы не контролируете серверную среду.
Предостережение: символические ссылки могут быть предварительно разрешены или не иметь, используйте функцию PHP realpath, если вам нужно ее разрешить.
Предупреждение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Нет
Обратите внимание, что если что-то не установлено, оно может отсутствовать в $ _SERVER или быть пустым, поэтому используйте для теста функцию PHP «empty».
Обратите внимание, что если вы вызываете "php --info" в командной строке, то, естественно, некоторые из этих параметров будут пустыми, поскольку файл PHP не задействован.
Простой способ получить (реальный) IP-адрес клиента в PHP
А вот и еще один пост!
На днях я заметил, что все IP-адреса, записанные от посетителя в одном из моих приложений, были одинаковыми, с очень небольшими вариациями друг от друга! Ага ~ обнаружил ошибку!
Ну не много! 🙄 После быстрого поиска в Google я выяснил, что все эти IP-адреса были получены от CloudFlare (поставщика CDN, за которым стоят мои приложения)! Итак, CloudFlare заменяет обычно используемую переменную $ _SERVER ['REMOTE_ADDR']
своим собственным IP.
Достаточно честно!
Итак, если вы читаете это, скорее всего, вы столкнулись с аналогичной проблемой и ищете решение ... или, возможно, вам просто любопытно, что тоже нормально.
Вот очень простой способ получить (настоящий) IP-адрес клиента. Обратите внимание, что здесь используется синтаксис PHP7 +
, что означает, что для более ранних версий вам нужно будет применить несколько связанных , если
s и , иначе
s.
Php
# PHP7 +
$ clientIP = $ _SERVER ['HTTP_CLIENT_IP']
?? $ _SERVER ["HTTP_CF_CONNECTING_IP"] # за облачной вспышкой
?? $ _SERVER ['HTTP_X_FORWARDED']
?? $ _SERVER ['HTTP_X_FORWARDED_FOR']
?? $ _SERVER ['HTTP_FORWARDED']
?? $ _SERVER ['HTTP_FORWARDED_FOR']
?? $ _SERVER ['REMOTE_ADDR']
?? '0.0,0.0 ';
# Ранее, чем PHP7
$ clientIP = '0.0.0.0';
if (isset ($ _ SERVER ['HTTP_CLIENT_IP'])) {
$ clientIP = $ _SERVER ['HTTP_CLIENT_IP'];
} elseif (isset ($ _ SERVER ['HTTP_CF_CONNECTING_IP'])) {
# когда за облачной вспышкой
$ clientIP = $ _SERVER ['HTTP_CF_CONNECTING_IP'];
} elseif (isset ($ _ SERVER ['HTTP_X_FORWARDED_FOR'])) {
$ clientIP = $ _SERVER ['HTTP_X_FORWARDED_FOR'];
} elseif (isset ($ _ SERVER ['HTTP_X_FORWARDED'])) {
$ clientIP = $ _SERVER ['HTTP_X_FORWARDED'];
} elseif (isset ($ _ SERVER ['HTTP_FORWARDED_FOR'])) {
$ clientIP = $ _SERVER ['HTTP_FORWARDED_FOR'];
} elseif (isset ($ _ SERVER ['HTTP_FORWARDED'])) {
$ clientIP = $ _SERVER ['HTTP_FORWARDED'];
} elseif (isset ($ _ SERVER ['REMOTE_ADDR'])) {
$ clientIP = $ _SERVER ['REMOTE_ADDR'];
}
echo «Мой клиентский IP:», $ clientIP;
Удачного кодирования! 👋
Получить IP-адрес пользователя в PHP
- Используйте
$ _SERVER ['REMOTE_ADDR']
для поиска IP-адреса пользователя в PHP. - Используйте
$ _SERVER ['REMOTE_ADDR']
,$ _SERVER ['HTTP_CLIENT_IP']
и$ _SERVER ['HTTP_X_FORWARDED_FOR']
для поиска IP-адреса пользователя - Используйте тернарный оператор и
isset () Функция
для поиска IP-адреса пользователя
Мы представим способ доступа к IP-адресу пользователя из сервер в PHP с использованием суперглобальной переменной $ _SERVER
с REMOTE_ADDR
в качестве единственного элемента массива.Он используется как $ _SERVER ['REMOTE_ADDR']
.
Мы продемонстрируем другой способ доступа к IP-адресу пользователя в PHP, используя условное выражение, чтобы проверить, поступают ли IP-адреса пользователя из общего Интернета, от прокси-сервера или являются реальным IP-адресом. В этом методе используются такие элементы массива, как HTTP_CLIENT_IP
, HTTP_X_FORWARDED_FOR
и REMOTE_ADDR
.
Мы покажем вам сокращенный метод получения IP-адреса пользователя в PHP с помощью тернарного оператора и функции isset ()
.Этот метод также использует элементы массива, такие как HTTP_CLIENT_IP
, HTTP_X_FORWARDED_FOR
и REMOTE_ADDR
в суперглобальной переменной $ _SERVER
.
Используйте
$ _SERVER ['REMOTE_ADDR']
для поиска IP-адреса пользователя в PHP
Мы можем использовать выражение $ _SERVER ['REMOTE_ADDR']
, чтобы найти IP-адрес, с которого пользователь переходит на текущую страницу. . $ _SERVER
- это суперглобальная переменная в PHP, которая принимает в качестве аргументов различные элементы массива.Мы используем REMOTE_ADDR
в качестве элемента массива в переменной $ _SERVER
для доступа к фактическому IP-адресу клиента. Обратите внимание, что $ _SERVER ['REMOTE_ADDR']
не всегда дает правильный IP-адрес клиента во всех случаях. Остальные случаи мы обсудим ниже. Убедитесь, что ваш серверный API (SAPI) правильно настроен, чтобы приведенное выше выражение возвращало реальный IP-адрес соединения.
В приведенном ниже примере в качестве сервера используется localhost
. Таким образом, он возвращает петлевой IP-адрес.Чтобы узнать о адресе обратной связи, обратитесь сюда. Предположим, что URL-адрес следующего PHP-скрипта - http: //localhost/index.php
. Он выводит IP-адрес локального компьютера как :: 1
. :: 1
- это IPv6-представление локального хоста
.
Например, назначьте $ _SERVER ['REMOTE_ADDR']
переменной ip_addr
. Затем распечатайте переменную, используя echo
.
Пример кода:
# php 7.Икс
php
$ ip_add = $ _SERVER ['REMOTE_ADDR'];
echo "IP-адрес пользователя -". $ ip_add;
?>
Вывод:
IP-адрес пользователя - :: 1
Используйте
$ _SERVER ['REMOTE_ADDR']
, $ _SERVER ['HTTP_CLIENT_IP']
и $ _SERVER ['HTTP_X_FORWARDED_FOR']
для поиска IP-адреса пользователя
Мы можем использовать элементы массива суперглобальных элементов переменная $ _SERVER
, например $ _SERVER ['REMOTE_ADDR']
, $ _SERVER ['HTTP_CLIENT_IP']
и $ _SERVER ['HTTP_X_FORWARDED_FOR']
, чтобы найти IP-адрес пользователя в PHP.Используйте $ _SERVER ['REMOTE_ADDR']
, чтобы найти реальный IP-адрес пользователя. Используйте $ _SERVER ['HTTP_CLIENT_IP']
, чтобы найти IP-адрес, когда пользователь обращается к странице из общего Интернета. Используйте $ _SERVER ['HTTP_X_FORWARDED_FOR']
, чтобы найти IP-адрес, когда пользователь использует прокси-сервер для доступа к веб-странице. Обратите внимание, что заголовки, такие как HTTP_X_FORWARDED_FOR
и HTTP_CLIENT_IP
, могут быть подделаны, поскольку это может быть установлено кем угодно. Иногда они могут не соответствовать реальному IP-адресу клиента.
Например, используйте функцию empty ()
, чтобы проверить, содержит ли что-либо $ _SERVER ['HTTP_CLIENT_IP']
. Если он есть, присвойте значение переменной $ ip
и выведите i.
Снова выполните проверку $ _SERVER ['HTTP_X_FORWARDED_FOR']
соответственно и присвойте значение и распечатайте его, если оно существует. Выполните аналогичную операцию на $ _SERVER ['REMOTE_ADDR']
.
В приведенном ниже примере $ _SERVER ['REMOTE_ADDR']
возвращает IP-адрес, поскольку пользователь не использует прокси-серверы или общее подключение к Интернету.Обратитесь к Руководству по PHP, чтобы узнать больше о массиве $ _SERVER
.
Пример кода:
#php 7.x
php if (! empty ($ _ SERVER ['HTTP_CLIENT_IP'])) {
echo $ ip = $ _SERVER ['HTTP_CLIENT_IP'];
} elseif (! empty ($ _ SERVER ['HTTP_X_FORWARDED_FOR'])) {
echo $ ip = $ _SERVER ['HTTP_X_FORWARDED_FOR'];
} еще {
echo $ ip = $ _SERVER ['REMOTE_ADDR'];
}
?>
Выход:
:: 1
Используйте тернарный оператор и
isset ()
функцию для поиска IP-адреса пользователя
Мы можем использовать сокращенный метод, чтобы найти IP-адрес пользователя в PHP с помощью тернарного оператора.В этом методе метод isset ()
проверяет, содержит ли массив указанные элементы или файлы заголовков.
Например, используйте функцию isset ()
, чтобы проверить, содержит ли массив HTTP_CLIENT_IP
. Если условие истинно, устанавливается HTTP_CLIENT_IP
. Затем, если условие не выполняется, функция isset ()
используется для проверки, содержит ли массив HTTP_X_FORWARDED_FOR
. Точно так же, если условие истинно, устанавливается HTTP_X_FORWARDED_FOR
, а REMOTE_ADDR
устанавливается, когда условие не выполняется.
В приведенном ниже примере клиент не использует прокси или общий Интернет. Следовательно, выполняется $ _SERVER ['REMOTE_ADDR']
. Пожалуйста, проверьте MSDN Web Docs, чтобы узнать о тернарном операторе.
Пример кода:
#php 7.x
php
$ ip = isset ($ _ SERVER ['HTTP_CLIENT_IP'])? $ _SERVER ['HTTP_CLIENT_IP']: isset ($ _ SERVER ['HTTP_X_FORWARDED_FOR'])? $ _SERVER ['HTTP_X_FORWARDED_FOR']: $ _SERVER ['REMOTE_ADDR'];
echo «IP-адрес пользователя -». $ ip;
?>
Вывод:
IP-адрес пользователя - :: 1
Внести вклад
DelftStack - это коллективный проект, созданный такими компьютерными фанатами, как вы.Если вам понравилась статья и вы хотите внести свой вклад в DelftStack, написав платные статьи, вы можете проверить страницу напишите для нас.
Получение IP-адресов посетителей в PHP с помощью $ _SERVER ['REMOTE_ADDR']
Мы можем получить IP-адрес любого посетителя с помощью PHP. Поиск IP-адреса является очень важным требованием для многих скриптов, в которых мы храним данные участников или посетителей. В целях безопасности мы можем хранить IP-адреса наших посетителей, которые совершают какие-либо покупки или совершают какие-либо транзакции в Интернете.Мы можем использовать IP-адрес, чтобы узнать географическое положение посетителя. Некоторое время на основе IP-адреса мы можем перенаправить браузер в разные области сайта.
Какой у меня IP-адрес?
Вот код для отображения вашего IP-адреса.
Php
$ ip = $ _ СЕРВЕР ['REMOTE_ADDR'];
echo "IP-адрес = $ ip";
?>
Приведенный выше код отобразит этот IP-адрес = 85.249.28.1
Скопируйте этот IP-адрес в буфер обмена
Географическое положение с использованием IP-адреса
Отправьте форму выше, чтобы увидеть ваше физическое местоположение, определенное с помощью вашего IP-адреса.Любой другой IP-адрес может быть использован для определения его географического положения.
Адрес прокси-сервера
Некоторые посетители просматривают сайты из-за прокси-серверов. Мы можем собрать адрес прокси вместе с IP-адресом клиента, используя этот код. Однако этим адресом можно легко манипулировать, поэтому при регистрации лучше сохранить оба адреса посетителя.
$ ip2 = $ _ СЕРВЕР ['HTTP_X_FORWARDED_FOR'];
echo "Адрес прокси = $ ip2";
Адрес прокси = не найден
Другие переменные сервера
$ _SERVER - это массив, который содержит много информации, предоставленной сервером, и одним из элементов является REMOTE_ADDR, который дает нам IP-адрес.Вот еще один пример получения имени сервера с помощью $ _SERVER
$ _SERVER ['SERVER_NAME'] = www.plus2net.com
Вы можете отображать все другие элементы массива, используя отображаемые элементы массива. Вот пример кода.
while (list ($ key, $ val) = each ($ _SERVER)) {
echo "$ key -> $ val
";
}
Динамический IP и статический IP-адрес
Каждый раз, когда мы подключаемся к Интернету через нашего Интернет-провайдера (ISP), мы получаем один IP-адрес из пула IP-адресов, доступных нашему Интернет-провайдеру.Этот пул IP-адресов был назначен вашему интернет-провайдеру Internet Assigned Numbers Authority (IANA), отделом Интернет-корпорации по присвоению имен и номеров (ICANN).
Значит, ваш IP-адрес время от времени меняется
Это похоже на ежедневное пользование арендованным автомобилем. Оператор вашей кабины будет выдавать вам автомобиль каждый раз, когда вы спрашиваете, с другим номерным знаком.
Система доменных имен (DNS)
Если кто-то хочет знать, какой автомобиль вы используете сегодня, он должен спросить об этом оператора вашей кабины.Узнав эти подробности, он сможет связаться с вами. Это та работа, которую ваш сервер системы доменных имен (DNS) выполняет постоянно. Он поддерживает список веб-сайтов с совпадающими IP-адресами. Когда мы вводим имя веб-сайта в адресную строку веб-браузера, он подключается к DNS (серверу) и запрашивает соответствующий IP-адрес. Когда приходит такой запрос на веб-сайт, ваш DNS-сервер у вашего интернет-провайдера получает соответствующий IP-адрес и подключает ваш браузер к этому IP-адресу для доступа к веб-сайту.
Что произойдет, если IP-адрес недоступен в DNS нашего интернет-провайдера?
Он ищет соответствующую запись в высокоуровневом (корневом) DNS, и эта информация время от времени обновляется.
Вы можете попросить своего интернет-провайдера предоставить статический IP-адрес за дополнительную плату.
Статический IP-адрес
Это похоже на то, как если бы вы постоянно использовали эксклюзивный автомобиль для собственного использования, поэтому номерной знак вашего автомобиля не меняется. Каждый раз при подключении к Интернету у вас будет один фиксированный IP-адрес. Это необходимо, если у вас есть какое-то конкретное приложение, такое как VOIP (передача голоса по IP), центр обработки данных, веб-хостинг, виртуальная частная сеть (VPN) и т. Д.
Веб-хостинг
Мы должны использовать фиксированный IP-адрес для предоставления услуг веб-хостинга. Но один IP-адрес может использоваться более чем одним сайтом.
Сохранение IP-адреса в таблице базы данных MySQL
После сбора IP-адреса мы можем сохранить его в таблице mysql. Наряду с IP-адресом мы можем хранить реферер, данные браузера и т. Д.
Мы можем преобразовать IP-адрес в формате точки в число с помощью функции ip2long и сохранить в базе данных MySQL.
Это IPV4-адрес, и для IPV6-адреса следующего поколения мы должны изменить длину поля нашей таблицы базы данных.
IP-адрес сканера Google
Эта страница считывает IP-адрес вашего или любых других посетителей этой страницы.Сканер Google (паук или googlebot), когда посещает эту страницу для индексации, ему также отображается его IP-адрес. Мы можем узнать, что хранит сканер, посетив кешированную версию этой страницы.
Введите эту строку в поле поиска Google.
кеш: www.plus2net.com/php_tutorial/php_ip.php
прокрутите вниз и посмотрите IP-адрес бота Google.
реферер на ваш сайт с помощью PHP →
Как получить IP-адрес с помощью Python? →
Эта статья написана plus2net.com team.
plus2net.com
John | 15-06-2009 |
Мне нужен сценарий, аналогичный тому, что находится на tracemyip.com |
anto | 17-06-2009 |
хорошо .. не могли бы вы показать, как получить полную информацию об адресуемой сети, включая шлюз и маску подсети? спасибо |
Spirit | 20-06-2009 |
Вы не можете узнать маску подсети кого-либо или шлюз извне.Оба являются частью своей внутренней сети, и все они имеют один и тот же внешний IP-адрес. |
Myles | 13-07-2009 |
Джону - Спасибо за эту информацию, теперь иди и сделай это. Анто, введите ipconfig в msdos или, что, вероятно, более уместно ..... winipcfg в ЗАПУСКЕ, а затем ЗАПУСК. |
Аджай Джоши | 19-09-2009 |
спасибо .. не могли бы вы показать, как получить полную информацию об отслеживании IP / захвате IP |
CanadaWest | 21 -09-2009 |
Вы говорите, «таким образом можно записать географическое положение посетителя» Как я могу получить географическое положение пользователя, чтобы перенаправить пользователя на правильную информацию для своего региона? |
smo | 21-09-2009 |
Как только IP-адрес известен, местоположение может быть собрано с использованием доступных таблиц географического местоположения.Эти таблицы доступны по цене и могут регулярно обновляться. |
штуковина | 28-11-2009 |
Можете ли вы показать, как получить полную информацию о адресованной сети |
santosh | 30-12-2009 |
как запустить вышеуказанный код? ... |
Pham Nguyen | 01-01-2010 |
почему я использую код $ ip = @ $ REMOTE_ADDR; на localhost.$ ip = 127.0.0.1. Пожалуйста, дайте мне знать, как насчет хост-сервера? |
Krishnat | 31-01-2010 |
Я хочу разрабатывать киберпену через php .. поэтому, пожалуйста, сообщите мне некоторые рекомендации |
PHP Developer | 18-03- 2010 |
Хотите узнать, как узнать, кому принадлежит IP и каков его адрес. Спасибо! |
kiran malvi | 15-04-2010 |
Эта функция ip наиболее полезна для всех.тогда спасибо. |
Махендра Райгуде | 07-07-2010 |
Действительно полезная информация. Спасибо. |
Mutahir shah | 22-10-2010 |
Пожалуйста, кто-нибудь может предоставить мне, как преобразовать IP-адрес в адрес, по которому пользователь вошел в систему. |
John | 11-01-2011 |
Спасибо....это сработало. |
Майкл | 11-02-2011 |
У меня есть 14 брошюр, которые я хочу, чтобы посетители моего сайта могли отправлять своим друзьям. Пожалуйста, позвольте мне прикрепить скрипт внизу страницы, чтобы посетители отправляли его своим друзьям. |
Sparky | 23-08-2012 |
Я пытаюсь определить, где разместить этот фрагмент кода в моем.php файл. Внутри страницы есть html и php код. Я хотел бы отслеживать IP-адреса и сохранять их в моем файле .csv, с которым я уже работал с fwrite. |
Hitender | 05-12-2012 |
как получить IP-адрес пользователя, заполняющего форму на сайтах php? Мне нужна точная кодировка, дайте мне знать об этом .... |
HridoY636 | 03-04-2013 |
Почему этот код показывает разные IP-адреса в разное время.. Даже если я захожу на эту страницу в той же сети, на том же телефоне и даже в одном браузере? Пожалуйста, ответь мне. |
smo1234 | 06-04-2013 |
Ваш интернет-провайдер назначает вам другой IP-адрес каждый раз, когда вы подключаетесь к Интернету. Это известно как динамический IP-адрес. Напротив, если вы возьмете статический IP-адрес у своего интернет-провайдера, они будут взимать за это больше, но вы можете иметь свои собственные услуги, такие как VOIP, веб-хостинг и т. Д. |
akhil | 22-04-2013 |
Я хочу узнать IP-адрес компьютера, который общается со мной из другой сети? |
Anindya | 18-05-2013 |
как получить постоянный IP-адрес компьютера.. ?? Является ли это возможным..?? |
George | 19-05-2013 |
вы также можете использовать плагин геолокации ip, такой как в Bricksett CMS. он берет IP-адрес пользователя, а затем дает вам код страны. |
mohsen | 02-09-2013 |
спасибо ... это коротко и полезно. |
FARHAN | 17-03-2015 |
Можете ли вы мне помочь, мне нужен полный сценарий, можете ли вы отправить мне мой адрес электронной почты, пожалуйста (спасибо за помощь) |
siva | 02-08-2016 |
Привет, я использовал указанную выше программу ip, но мой результат получил следующий формат: IP-адрес = :: 1 |
smo1234 | 10-09-2016 |
Если вы можете запустить PHP-скрипт, вы можете запустить этот код, дополнительный код не требуется. |
PHP: Как прочитать IP-адрес удаленного компьютера / браузера
Автор: Вивек Гите
Последнее изменение: 25 августа 2013 г.
Как прочитать IP-адрес удаляемой системы или браузера с помощью языка программирования на стороне сервера PHP? Как я могу получить IP-адрес клиента и сохранить его в переменной $ ip с помощью php + apache?
Подробности руководства | |
---|---|
Уровень сложности | Easy |
Root привилегии | Нет |
Требования | PHP |
Приблиз.время чтения | 5m |
PHP имеет встроенное средство для обнаружения удаленного браузера, IP-адреса и других свойств. Эти значения присваиваются специальной переменной. В этом случае он присваивается переменной с именем REMOTE_ADDR. Вы можете использовать любой из следующих операторов, чтобы получить или прочитать IP-адрес.
Синтаксис PHP для определения IP-адреса
Синтаксис:
$ ip = $ _SERVER ['REMOTE_ADDR'];
ИЛИ
ИЛИ
$ ip = $ _SERVER ['REMOTE_ADDR'];
ИЛИ
$ ip = getenv ('HTTP_CLIENT_IP');
Синтаксис PHP для определения имени удаленного хоста
Синтаксис:
$ ip = $ _SERVER ['REMOTE_ADDR']; $ hostname = gethostbyaddr ($ ip);
ИЛИ
$ hostname = gethostbyaddr ($ _ SERVER ['REMOTE_ADDR']);
Пример
Создайте файл с именем client-ip.php и сохраните или загрузите на своем веб-сервере DocumentRoot (например, /var/www/html/client-ip.php):
Php // client-ip.php: Демо-скрипт от nixCraft// получаем IP-адрес $ ip = $ _SERVER ['REMOTE_ADDR']; // отображаем обратно echo " Демонстрация IP-адреса клиента
"; echo «Ваш IP-адрес:». $ ip; echo "
Ваше имя хоста:". gethostbyaddr ($ ip); ?>
Сохраните и закройте файл.