Как определить IP-адрес компьютера

определить ip адрес

От автора: Идею для этого урока я взял из комментариев пользователей ресурса //webformyself.com/. В частности, интересовал такой вопрос: «Как определить IP-адрес компьютера?». Попробуем разобраться, как это можно сделать, и заодно узнаем еще несколько вещей, которые, безусловно, могут пригодиться Вам в создании веб-приложений.


Время ролика: 19:50

Ссылка для скачивания исходников: Скачать одним архивом

Ссылка для скачивания всего архива (видео+исходники): Скачать одним архивом. Размер: 33.1 mb.

Итак сразу скажу, для того чтобы понять как определить IP-адрес, много кода писать не придется ибо все уже написано до нас. Нам же остается просто знать, как это использовать. Под «этим» в данном случае понимается суперглобальный массив $_SERVER, в который интерпретатор PHP помещает переменные, полученные от сервера. О том, что такое массив, я подробно рассказываю и показываю в уроке по созданию галереи. Вкратце можно сказать, что массив — это своеобразная большая переменная, в которой можно хранить обычные переменные. Переменных в глобальном массиве $_SERVER довольно много. Мы же сегодня поговорим лишь о некоторых из них. Эти переменные, кстати, еще называются также элементами массива. И первые два элемента, о которых мы поговорим — это элементы, благодаря которым можно получить имя сервера, на котором выполняется скрипт.

1. Имя сервера

Создадим страницу (у меня это index.php) и напишем в нее следующий код:

Здесь мы выводим на экран элемент массива $_SERVER по имени SERVER_NAME, в котором как раз и содержится информация о сервере. Если Вы тестируете скрипт на локальном сервере, то в качестве имени сервера получим — "localhost".

Аналогичный результат можно получить при обращении к элементу HTTP_HOST:

Где может пригодиться использование этих элементов массива $_SERVER?. Допустим, у нас есть сайт на домене //mydomen.ru. Соответственно, если на этом сайте используются абсолютные ссылки, то мы столкнемся с определенными трудностями при переносе сайта на новый домен, к примеру, //newdomen.ru. Нам придется менять все абсолютные ссылки. Вот здесь нам как раз и могут пригодиться эти элементы.

2. Откуда пришел пользователь

Часто нам необходимо узнать с какой именно страницы к нам попал пользователь. В этом нам может помочь элемент по имени HTTP_REFERER. В этом элементе как раз и содержится адрес страницы, с которой пользователь попал на страницу, на которой мы вызываем элемент HTTP_REFERER. Переход, соответственно, должен происходить по ссылке. Создадим еще одну страницу, например test.php, и в ней пропишем ссылку на страницу index.php. На странице index.php пропишем код:

Теперь попробуем перейти по ссылке. В своем случае я получу такой адрес страницы — //localhost/arr_server/test.php (обе страницы у меня в каталоге arr_server, а сам скрипт тестируется на локальном сервере).

3. Информация о клиенте

Если нам необходимо собирать статистическую информация, например, пользователи с какими браузерами посещают наш сайт, то мы можем использовать для этих целей элемент HTTP_USER_AGENT:

В результате на экран в моем случае будет выведена строка — «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:

Если Вы тестирует скрипт на локальном сервере, то получите такой IP-адрес — 127.0.0.1. Если тестируете в сети — получите IP-адрес, под которым зашли в сеть. Как же нам передать IP-адрес клиента, который заполнял форму? Сам он его, конечно же, вряд ли вводить будет, поэтому нам остается определить этот адрес при помощи элемента REMOTE_ADDR массива $_SERVER и скрытно от клиента отослать его. Сделать это можно несколькими способами. Мы будем использовать скрытое поле формы. Создадим простую форму на странице test.php:

Данные из этой формы будут передаваться методом POST, в качестве обработчика данных мы указали файл index.php (детально обо всем этом я рассказываю в мини-курсе по созданию полноценной формы обратной связи). На странице index.php давайте будем принимать эти данные и выводить их:

Здесь мы проверили, была ли нажата кнопка формы и, если она нажата, мы выводим то, что получили в качестве имени. А ниже мы прописали ссылку на ту страницу, откуда пришли, т.е., на страницу с формой. Об условиях, глобальном массиве $_POST и прочих вещах, которые мы только что использовали, я также детально рассказывал в мини-курсе по созданию формы обратной связи. Мы все делаем максимально упрощенно, без особых проверок, поскольку целью урока является простая передача IP-адреса клиента и не больше.

Итак, имя мы получаем. Теперь осталось передать скрытно от пользователя его IP-адрес. Для этого допишем на странице с формой еще одно поле, типом которого укажем hidden (т.е., скрытое), а в качестве его значения укажем элемент REMOTE_ADDR:

Если мы сейчас обновим страницу с формой, то ничего не изменится… но если мы посмотрим исходный код этой страницы, то увидим следующее:

Интерпретатор PHP в качестве значения скрытого поля прописал IP-адрес клиента, который и будет отправлен на страницу index.php, и этот адрес будет находиться в переменной ip глобального массива $_POST. Осталось дописать вывод в файле index.php:

Вот, в принципе, и все. Вот так вот просто при помощи элементов массива $_SERVER мы можем получить массу служебной информации, которую затем можем использовать в своих веб-приложениях. Мы рассмотрели только пять элементов массива $_SERVER, на самом деле их, как уже говорилось выше, гораздо больше и без них часто сложно организовать функционирование достаточно серьезного проекта.

На этом, урок по определению IP-адреса компьютера окончен. До новых встреч!

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (81)