Зауваження: $_SERVER - спеціальна зарезервована мінлива PHP, яка містить всю інформацію, отриману від Web-сервера. Її також називають суперглобальной. Для більш детальної інформації дивіться розділ Суперглобальні змінні. Ці спеціальні змінні з'явилися в PHP, починаючи з версії 4.1.0. До цього використовувались масиви $HTTP_*_VARS, такі як $HTTP_SERVER_VARS. З версії PHP 5.4.0 ці старі змінні видалені (див. зауваження за старими програмами). Для виводу даної змінної ми зробимо так
Приклад #1 Виведення значення змінної (елемент масиву)
echo $_SERVER['HTTP_USER_AGENT']; ?> Приклад виводу даної програми:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) У PHP існує величезна кількість типів змінних. У попередньому прикладі ми друкували елемент масиву. Масиви можуть бути дуже корисні.
$_SERVER - це просто одна із змінних, які надаються вам мовою PHP. Список таких змінних можна подивитися в розділі "Зарезервовані змінні" або переглянувши висновок функції phpinfo(), використовується в прикладі в попередньому розділі.
Всередину PHP-тегів можна поміщати кілька виразів і створювати маленькі блоки коду, що роблять більше, ніж простий виклик echo. Наприклад, якщо ви хочете додати перевірку для Internet Explorer, можна зробити так:
Приклад #2 Приклад використання керуючих структур і функцій
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { echo 'Ви використовуєте Internet Explorer. '; } ?> Приклад виводу даної програми:
Ви використовуєте Internet Explorer.<br /> Тут ми показали кілька нових елементів. По-перше, тут є конструкція if. Якщо ви знайомі з основами синтаксису мови C, то ви вже помітили щось схоже. Якщо ж ви не знаєте C або подібного з синтаксису мови, то найкращий варіант - взяти якусь вступну книжку по PHP і прочитати перші пару голів. Інший варіант - почитати розділ Опис мови даного керівництва.
Крім цього, тут є виклик функції strpos(). strpos() - вбудована в PHP функція, яка шукає один рядок в інший. В даному випадку ми шукаємо рядок 'MSIE' (так звану "голку" - needle) $_SERVER['HTTP_USER_AGENT'] (у так званому "сене" - haystack). Якщо "голка" знайдено всередині "сіна", функція повертає позицію "голки" щодо початку "сіна". В іншому випадку вона повертає FALSE. Якщо вона не поверне FALSE, то умова в if виявиться істинним (TRUE), і код у фігурних дужках ({ }) виконається. В іншому випадку цей код не виконується. Спробуйте створити аналогічні приклади з використанням команд if, else і інших функцій, таких, як strtoupper() і strlen(). Також подібні приклади містяться в багатьох описах функцій в даному керівництві. Якщо ви не знаєте, як використовувати функції, можливо, вам варто прочитати сторінку керівництва про те, як читати визначення функцій і розділ про функції в PHP.
Продемонструємо, як можна входити в режим коду PHP і виходити з нього навіть прямо посередині блоку з кодом:
Приклад #3 Змішання режимів HTML та PHP
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { ?> <h3>strpos(), повинно бути, повернув не false</h3> <p>Ви використовуєте Internet Explorer</p> } else { ?> <h3>strpos() повернув false</h3> <p>Ви не використовуєте Internet Explorer</p> } ?> Приклад виводу даної програми:
<h3>strpos(), повинно бути, повернув не false</h3> <p>Ви використовуєте Internet Explorer</p> Замість використання команди PHP echo для висновку, ми вийшли з режиму коду і просто послали вміст HTML. Важливий момент тут те, що логічна структура коду PHP при цьому не втрачається. Тільки одна HTML-частина буде надіслана клієнту в залежності від результату функції strpos() (іншими словами, в залежності від того, була знайдена рядок MSIE чи ні).
Зверніть увагу, що в Інтернет Експлорер 11 не містить НЕСУЧАСНО у рядку агента користувача, наприклад на Windows 8 з ie11, я отримую наступне:
Нижче Mozilla/5.0 (вікнах NT 6.3; wow64 буде; і Trident/7.0; RV:11.0) як Гекон
Так що якщо ви хочете включити тест для ie11, приведений вище код зміни:
якщо (strpos (змінна$_server['HTTP_USER_AGENT'], 'НЕСУЧАСНО') !== Помилкові || strpos (змінна$_server['HTTP_USER_AGENT'], 'тризуб') !== Значення false) { Ехо 'Ви використовуєте Інтернет Експлорер.<бр />'; } ?>
На краю, рядок агента користувача не містить 'НЕСУЧАСНО' ні 'тризуб', а швидше 'край'.
В той час як це легко захопитися змішувати логіку і подання разом з це так легко зробити, ви краще використовувати PHP-код в HTML тільки заповнити значення, або включати інші вихідні файли.
Зберегти ваш фактичний обробки в окремих бібліотеках, які викликаються, перш ніж надсилати будь-які заголовки на сторінці. Намагайтеся уникати виклик скрипта, який отримує або надає інформацію, або маніпулює ними в середині коду HTML. Ви знайдете це набагато легше підтримувати.
Источник: http://php.net/manual/ru/tutorial.useful.php |