ProfiPHPProfiPHP
Категория: Директивы PHP

Директива Variables_order

Вы можете ограничивать выполнение отдельных переменных окружения с помощью директивы Variables_order:
variables_order string
Благодаря директиве Variables_order можно устанавливать разрешение использования и порядок обработки переменных окружения EGPCS. Сокращенное название EGPCS содержит в себе первые буквы названий глобальных массивов: Environment, Get, Post, Cookie, Server.

Если в директиве как параметр используется "SP", то PHP будет создавать в superglobals только переменные $_SERVER и $_POST, но не будет создавать $_ENV, $_GET и $_COOKIE.

Если параметр пустой (""), тогда ни одна переменная superglobals не будет создана.

Приведем пример:
<form action="" method="POST">
<input text="text" name="par" />
<input type="submit" value="send" />
</form>
<?php echo $_POST['par']; ?>
Если не включить символ P в параметр директивы, то при вводе данных массив $_POST не будет создан и выведется ошибка:
Notice: Undefined index: par in file.php on line ...
Аналогичная ситуация произойдет, если не укажем символ G и выполним код с параметрами script.php?par=php.

Если включена устарела директива Register_globals, то Variables_order также устанавливает порядок экспорта переменных ENV, GET, POST, COOKIE и SERVER в глобальное пространство.

Например, если порядок переменных установлен как "EGPCS", Register_globals включена, и существуют обе $_GET['action'] и $_POST['action'], то переменная $action будет содержать значение $_POST['action'], так как P в нашем примере идет после G.

Директива Variables_order относиться к режиму PHP_INI_PERDIR, поэтому значение может быть установлено в php.ini, .htaccess или httpd.conf (С версии PHP 5.3). До версии PHP 5.0.5 значение могло быть установлено отовсюду.

Вы можете изменять настройки директивы в файле .htaccess, если ваш сервер позволяет это:
php_value variables_order "EGPCS"

Добавить комментарий

Имя:
Текст комментария: