Как уйти от использования на сайте register_globals = ON

denisOg

Новичок
Хочу уйти от использования register_globals = ON в .htaccess .
Многие проекты и сам движок написан с установкой register_globals = ON.
Понимаю что не безопасно их использовать, в 6 версии они будут отключены.

Как побыстрому переписать части движка (дописать), что бы уйти от использования register_globals = ON

Один вариант в header дописывать:
$a=$_GET['a'];
$b=$_POST['b'];
............................
..........................
...........................

Но это очень долго. Может есть более гибкие решения?
 

~WR~

Новичок
В начале скрипта добавить что-нибудь вроде:
PHP:
foreach($_REQUEST as $k => $v)
{
    $$k = $v;
}
Но лучше бы переписать сайт.
 

tz-lom

Продвинутый новичок
grep -ir input *
grep -ir textarea *

получили список переменных получаемых извне,далее работаем только с ним
 

zerkms

TDD infected
Команда форума
Понимаю что не безопасно их использовать
denisOg нравится это.
Приведённый товарищем ~WR~ делает абсолютно то же самое, что и register_globals. На фоне этого ваше упоминание о т.н. "безопасности" и симпатии к тому коду выглядит очень странно.
 

scorpion-ds

Новичок
Хочу уйти от использования register_globals = ON в .htaccess .
Многие проекты и сам движок написан с установкой register_globals = ON.
Понимаю что не безопасно их использовать, в 6 версии они будут отключены
6-ой версии думаю не будет еще года 3-4, но эту опцию собираются отключить уже в 5.4.

И лучше просто переписать код.
 

fixxxer

К.О.
Партнер клуба
Я догадываюсь, (судя по тому что код видимо времен года 2002-3 раз такие вопросы), что там мало того, что register_globals, так еще и при error_reporting = e_all куча notice-ов.

Я бы, если пришлось такой кал грести, сделал функции get($key, $default = null), аналогично post, request, server
вида
funciton get($key, $default = null) {
return array_key_exists($key, $_GET) ? $_GET[$key] : $default;
}
и прошелся бы по всему коду с такой заменой. Сразу две задачи решатся.

Ну и с "безопасностью" это решит более менее
 

scorpion-ds

Новичок
Небольшой оффтопик, где-то в 2005 году, когда я начинал осваивать PHP, попалась мне книжка, которая учила писать скрипты с "register_globals = ON", но вот гугол уже подсказывал, что надо бы работать со "register_globals = OFF", книжку пришлось купить другую, а потом еще объяснить преподавателю на лабах чего-то это моя лаба таким странным образом написана (она была рассчитана на "register_globals = ON").
 

fixxxer

К.О.
Партнер клуба
По мануалу надо учиться, а не по книжкам хз каким :)
 

AmdY

Пью пиво
Команда форума
если ты знаешь о проблемах register_globals, то в флаге ON ничего страшного нет.
 

Фанат

oncle terrible
Команда форума
$a=$_GET['a'];
$b=$_POST['b'];

Но это очень долго. Может есть более гибкие решения?
На самом деле такие присваивания - это именно то, чего добивались разработчики языка, вводя этот флаг.
Если ты заранее инициализировал все исползуемые в скрипте переменные, то тебе уже без разницы и сам этот флаг, и его угрозы, и куча других проблем.
 

Absinthe

жожо
если ты знаешь о проблемах register_globals, то в флаге ON ничего страшного нет.
Ну конечно нет, а что потом на кривом сервере может сайт перестать работать(проблемы с сессиями и т.д.) - это так, мелочи :D
 
Сверху