Від автора: Ідею для цього уроку я взяв з коментарів користувачів ресурсу 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-адреси комп’ютера закінчено. До нових зустрічей!