Что такое register_globals и как с этим бороться?

Автор статьи: Андрошук Александр ©
Сайт Автора: нет
E-mail Автора: нет
Дата публикации: 20.12.2005

 Register_globals - это параметр в настройках PHP-интерпретатора. У себя на виртуальном серваке часто ставят этот параметр в положение on. Сейчас, у некоторых хостеров этот параметр стоит в положении off.

В чём разница?

Если параметр включён (on), то передав через форму данные PHP обрабатывает их и преобразует в глобальные переменные, и получить их можно просто, допустим через форму мы передали поле с названием name, значит получить значение можно через переменную $name.

Если параметр выключен, множество скриптов начинают глючить и создатель скрипта гонит на хостинг, хотя сам он виноват. При register_globals = off переменную переданную через форму просто получить уже нельзя. То же самое и с куками (cookie).

Что же делать? Если мы передавали методом GET, то получить переменные можно так: $_GET['varible']. Если методом POST: $_POST['varible']. Если хотим достать из куков: $_COOKIE['varible'].

Есть медот прощЕ! Просто можно вначале скрипта написать пару строк:

extract($_GET);
extract($_POST);
extract($_COOKIE);

Для того, чтобы проверить это сделайте следующее (поставьте в файле php.ini параметр register_globals = off):

<?
extract($_GET);
extract($_POST);
extract($_COOKIE);
echo $name;
?>

И передайте методом GET (http://localhost/index.php?name=me) переменную $name. Она выведеться, потом удалите эти строки, оставте только echo $name; и снова передайте методом GET переменную $name, она не покажется.