Як визначити IP-адресу компютера

15

Від автора: Ідею для цього уроку я взяв з коментарів користувачів ресурсу http://webformyself.com/. Зокрема, цікавило таке питання: «Як визначити IP-адресу комп’ютера?». Спробуємо розібратися, як це можна зробити, і заодно дізнаємося ще кілька речей, які, безумовно, можуть стати в нагоді Вам у створенні веб-додатків.

Час ролика: 19:50

Посилання для скачування джерел: Скачати одним архівом

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

Отже відразу скажу, для того щоб зрозуміти як визначити IP-адресу, багато коду писати не доведеться бо все вже написано до нас. Нам же залишається просто знати, як це використовувати. Під «цим» в даному випадку розуміється суперглобальный масив $_SERVER, в який інтерпретатор PHP поміщає змінні, отримані від сервера. Про те, що таке масив, я докладно розповідаю і показую в уроці по створенню галереї. Коротко можна сказати, що масив — це своєрідна велика змінна, в якій можна зберігати звичайні змінні. Змінних в глобальному масиві $_SERVER досить багато. Ми ж сьогодні поговоримо лише про деяких з них. Ці змінні, до речі, ще називаються також елементами масиву. І перші два елементи, про які ми поговоримо — це елементи, завдяки яким можна отримати ім’я сервера, на якому виконується скрипт.

1. Ім’я сервера

Створимо сторінку (у мене це index.php) і напишемо в неї наступний код:

Тут ми виводимо на екран елемент масиву $_SERVER по імені SERVER_NAME, в якому як раз і міститься інформація про сервер. Якщо Ви тестуєте скрипт на локальному сервері, то в якості імені сервера отримаємо — «localhost».

Аналогічний результат можна отримати при зверненні до елемента HTTP_HOST:

Де може знадобитися використання цих елементів масиву $_SERVER?. Припустимо, у нас є сайт на домені http://mydomen.ru. Відповідно, якщо на цьому сайті використовуються абсолютні посилання, то ми зіткнемося з певними труднощами при перенесенні сайту на новий домен, наприклад, http://newdomen.ru. Нам доведеться міняти всі абсолютні посилання. Ось тут нам якраз і можуть стати в нагоді ці елементи.

2. Звідки прийшов користувач

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

Тепер спробуємо перейти за посиланням. У своєму випадку я отримаю таку адресу сторінки http://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 давайте будемо приймати ці дані і виводити їх:

‘;
echo ‘Назад’;
}
?>

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

Отже, ім’я ми отримуємо. Тепер залишилося передати приховано від користувача його IP-адресу. Для цього допишемо на сторінці з формою ще одне поле, типом якого вкажемо hidden (тобто, приховане), а в якості його значення вкажемо елемент REMOTE_ADDR:

Якщо ми зараз оновимо сторінку з формою, то нічого не зміниться… але якщо ми подивимося вихідний код цієї сторінки, то побачимо наступне:

Інтерпретатор PHP значення прихованого поля прописав IP-адресу клієнта, який і буде відправлений на сторінку index.php і цю адресу буде перебувати в змінною ip глобального масиву $_POST. Залишилося дописати висновок у файлі index.php:

‘;
echo ‘IP користувача:’ .$_POST[‘ip’]. ‘
‘;
echo ‘Назад’;
}
?>

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

На цьому урок з визначення IP-адреси комп’ютера закінчено. До нових зустрічей!