Начиная с версии PHP 4 и выше, появилось такое понятие как “суперглобальные” массивы. Почти все массивы начинаются с “$_” (кроме $GLOBALS).
Сегодня мы поговорим об одном из наиболее загадочных и неоднозначных массивах – $_SERVER. Наверняка, кроме него, вы еще встречали: $GLOBALS, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV, $_REQUEST, $_SESSION (вполне может быть что уже существуют и другие).
Массив $_SERVER, как и видно из названия, содержит в себе данные о текущем сервере.
Давайте разберем подробней, какие данные мы можем узнать, и как с этим вообще можно работать.
Как узнать что находится в массиве $_SERVER?
Как и любой другой массив в PHP, мы можем узнать список его элементов через функцию print_r. То есть, вам нужно на тестовой странице написать:
<?print_r($_SERVER);?>
Скорей всего, у вас будет какая-то каша в 1 строку, и чтобы понять, что это такое, можно:
- чуть дописать наш код
- нажать правую кнопку мыши на наших данных и выбрать “Исходный код выделенного фрагмента”.
Вам выбирать 🙂
<pre> <?print_r($_SERVER);?> </pre>
Еще встречается и такой вариант:
<? echo "<pre>"; print_r($_SERVER); echo "</pre>"; ?>
Как можно использовать массив $_SERVER в своих скриптах?
Не будем разбирать все элементы массива, расскажу, с чем конкретно сталкивался я в своей практике. На самом деле, все ограничивается лишь вашей фантазией и поставленной задачей – причем, как правило, задачу можно решить несколькими способами.
$_SERVER[‘HTTP_REFERER’] – в этом элементе массива содержится информация с какой страницы пользователь перешел на текущую. Ну, например, вам нужно скрыть информацию на странице только в том случае, если переход был со страницы /opt/.
<? if ($_SERVER['HTTP_REFERER'] == 'http://mysite.com/opt/') { //ваш код } ?>
где http://mysite.com – это URL вашего сайта.
Замечу, частенько бывали случаи, когда изменить данные на стороне сервера (на PHP) не всегда получалось. Тут на помощь приходил javascript – и хотя это выглядело как костыль, но на практике это работало. Приведу пример на jQuery:
<?if ($_SERVER['HTTP_REFERER'] == 'http://mysite.com/opt/') {?> <script> $('.mySelector').remove(); </script> <?}?>
$_SERVER[‘REDIRECT_URL’] – элемент содержит данные о текущей странице (без параметров и данных о домене). В принципе это очень удобно – вы можете выводить информацию только на каком-то конкретном разделе вашего сайта, особенно, если не получается вывести необходимую информацию иначе.
Кстати, если вы заметили, есть так же $_SERVER[‘REQUEST_URI’], но в нем уже присутствуют параметры.
Параметры в URL можно найти в $_SERVER[‘QUERY_STRING’].
Есть еще как минимум один способ как можно применять эти данные: например, проверять находиться ли пользователь на конкретном разделе. Сделать это можно простой проверкой на первое вхождение подстроки текущего урла 🙂
Довольно интересная статья, Дмитрий.
Продолжайте в том же духе! 🙂