Если на сервере в php.ini параметр register_globals установлен в off, что идет стандартно, начиная с PHP 4.2, а у вас обнаружился старый скирпт на PHP4, которому требуется, чтобы глобальные переменные были включены, можно обойти эти ограничения на уровне скриптов, не меняя настройки сервера.
Для этого в тех скриптах, где это нужно, можно использовать следующий код.
<?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
С регистрацией глобальных переменных связано большое количество споров и домыслов. На самом деле, включение регистрации глобальных переменных не несет в себе катастрофической угрозы безопасности, как это пытаются представить.
Тем не менее, реалии таковы, что во-первых, на большинстве серверов их закрывают, а во-вторых - проапгрейдив сервера до версии PHP 5 и выше, обычно оставляют дефолтное значение register_globals, то есть значение этой переменной обычно бывает off.
В таких случаях может пригодиться приведенная выше функция.
Обновлялась
10th of November, 2010