Суперглобальный массив $_SERVER

Суперглобальный массив $_SERVER

Начиная с версии 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’].

Есть еще как минимум один способ как можно применять эти данные: например, проверять находиться ли пользователь на конкретном разделе. Сделать это можно простой проверкой на первое вхождение подстроки текущего урла 🙂

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Один коментар

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *