Консультация № 98748
17.08.2007, 19:10
0.00 руб.
0 4 4
Здравствуйте уважаемы знатоки PHP!

Вопрос в следующем: обычно результаты формы я обрабатываю через массив $_REQUEST, но меня смущает, что вы во всех ответах с обработкой форм используете $_POST, $_GET. А чем плох $_REQUEST? Может я чего-то не догоняю и имеет место брешь в безопасности или это только для старых версий PHP? Просветите пожалуйста.

Обсуждение

Неизвестный
17.08.2007, 19:33
общий
это ответ
Здравствуйте, Почерк!
Если есть четкая уверенность что данные сейчас (и в будущем) передаются только методом post или get, то для обеспечения дополнительного контроля можно использовать $_POST или $_GET.

У меня на практике есть данные которые могут передаваться и через форму (post) и по ссылке (get) - обычно это интерфейсные данные (порядок сортировки отображаемой таблицы данных, текущая страница, число записей на страницу и т.п.). В этом случае используется $_REQUEST.
Неизвестный
17.08.2007, 19:34
общий
это ответ
Здравствуйте, Почерк!
Дело в том, что в массив $_REQUEST включаются все передоваемые переменные вне зависимо от того, какой метод использовался. А в массивы ГЭТ и ПОСТ включаются только `свои` переменные. К примеру, если в обоих методах есть $_GET[‘var‘] и $_POST[‘var‘], то в $_REQUEST окажется только одна из них.
Другой вопрос еще и в безопасности.
В принципе, если пользоваться $_REQUEST, то это также, как было бы при включенном register_globals в php.ini, а это, с точки зрения безопасности, не очень то безопасно.
Неизвестный
17.08.2007, 20:12
общий
это ответ
Здравствуйте, Почерк!
Да разницы никакой, разве что Вы ухитритесь написать Form с action="act1=чего-то" и в ней задать input name=act1 value=чего-то другое. Тогда что придёт в $_REQUEST - загадка природы, но так как подобные случаи вряд ли существуют в природе (в нормальных скриптах), то Вам всё равно $_POST, $_GET или $_REQUEST.
Неизвестный
17.08.2007, 20:57
общий
это ответ
Здравствуйте, Почерк!
$_REQUEST - это сборный массив из трех штук - $_GET, $_POST, $_COOKIE. Т.е. создав какую-то переменную в одном из этих массивов - она окажется и в $_REQUEST.
В общем-то с моей точки зрения особой бреши в безопасности тут не будет, так как register_global были опасны тем, что могли подменить неинициализированные переменные. Сдесь же в этом массиве переменная либо будет, либо нет. Но зато их можно очень просто подменить подставив значение в ту же строку запроса.

Единственное что не объясняет этот массив - это откуда эта переменная пришла. А енсли потребуется этот скрипт потом модифицировать или же изменять что-то, то тратить лишнее время на поиски из чего же явилась эта переменная никто не будет. Поэтому ради более красивого кода лучше использовать специализированные массивы - никто не запутается :)
Форма ответа