модификация POST

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

модификация POST

Сообщение Demon_id »

Ребята, чё вообще происходит? Зачем это сделали?

Код: Выделить всё

$_POST['test'] = 'test';
print_r(Yii::$app->request->post()); 
Array ( )

astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: модификация POST

Сообщение astronin »

предполагаю для защиты, чтоб вот так вот не делали

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

Ту да же вопрос.
Как получить переменную из $_REQUEST ? в 1.1 можно было: Yii::app()->request->getParam
Зачём спросите вы? Отвечу.
Есть форма восстановления пароля. На эту форму можно попасть по ссылке отправленной на почту. В ссылке есть хеш ?key=sdhfjksdhjk.
Приходит юзер по ссылке и я беру этот хеш. Он в get. Если хеш сошелся, то пускаю показываю юзеру форму где он может ввести новый пароль. Естественно эту форму нужно отправлять постом. этот же хеш пишется в hidden поле этой формы. Форма отправляется на тот же экшин откуда нарисовалась. И получается теперь уже мне мой хеш приходит как post. А код для его проверки один и тот же. И он прекрасно работал когда я брал переменную из $_REQUEST, т.к. я её жду в одном куске кода пофиг откуда, хоть из get, хоть из post.
Вот такая вот петрушка.
Пробую брать переменную через Yii::$app->request->getBodyParam(), но при get её там нету.

Ну не использовать же такие вот костыли?

Код: Выделить всё

$key = Yii::$app->request->get('key', null);
$key = ($key) ? $key : Yii::$app->request->post('key', null); 
Последний раз редактировалось Demon_id 2015.02.27, 16:59, всего редактировалось 1 раз.

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

astronin писал(а):предполагаю для защиты, чтоб вот так вот не делали
для защиты от кого? я программист, я намеренно модифицирую переменную.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):Ребята, чё вообще происходит? Зачем это сделали?

Код: Выделить всё

$_POST['test'] = 'test';
print_r(Yii::$app->request->post());
Array ( )
ну так значения уже заполнились из POST в bodyParams, а при вашем запросе они не перегружаются. Используем setBodyParams

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

ок, а с $_REQUEST что?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):ок, а с $_REQUEST что?
а что с $_REQUEST? Он разве где-то упоминается в коде фреймворка?

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

zelenin писал(а):
Demon_id писал(а):ок, а с $_REQUEST что?
а что с $_REQUEST? Он разве где-то упоминается в коде фреймворка?
прочитайте третье сообщение в этом треде.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

хак

Код: Выделить всё

$key = $request->post('key', $request->get('key', null)) ; 

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):
zelenin писал(а):
Demon_id писал(а):ок, а с $_REQUEST что?
а что с $_REQUEST? Он разве где-то упоминается в коде фреймворка?
прочитайте третье сообщение в этом треде.
я прочел и ответил. нет $_REQUEST во фреймворке.

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

zelenin писал(а):я прочел и ответил. нет $_REQUEST во фреймворке.
там вопрос не про $_REQUEST. вопрос про то, как забирать параметр из запроса, если он может приходить разным методом.

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

zelenin писал(а):хак

Код: Выделить всё

$key = $request->post('key', $request->get('key', null)) ;
костыль

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):
zelenin писал(а):я прочел и ответил. нет $_REQUEST во фреймворке.
там вопрос не про $_REQUEST. вопрос про то, как забирать параметр из запроса, если он может приходить разным методом.
я написал

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):
zelenin писал(а):хак

Код: Выделить всё

$key = $request->post('key', $request->get('key', null)) ; 
костыль
если во фреймворке нет $_REQUEST, то забираем только костылем.

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

zelenin писал(а):если во фреймворке нет $_REQUEST, то забираем только костылем.
а какие причины были на то чтобы выпилить это из 1.1 ?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):
zelenin писал(а):если во фреймворке нет $_REQUEST, то забираем только костылем.
а какие причины были на то чтобы выпилить это из 1.1 ?
домотал коммиты до 2011 - не вижу там $_REQUEST нигде, кроме как в $_REQUEST=$this->stripSlashes($_REQUEST);
и getParam выглядит так:

Код: Выделить всё

    public function getParam($name,$defaultValue=null)
    {
        return isset($_GET[$name]) ? $_GET[$name] : (isset($_POST[$name]) ? $_POST[$name] : $defaultValue);
    } 

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

getParam кстати именно тот хак, который я предложил)

Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: модификация POST

Сообщение Demon_id »

zelenin писал(а):getParam кстати именно тот хак, который я предложил)
ну это да. непонятно только чем он помешал в 2.0
просто лишний метод? или нарушает какие то каноны бытия?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: модификация POST

Сообщение zelenin »

Demon_id писал(а):
zelenin писал(а):getParam кстати именно тот хак, который я предложил)
ну это да. непонятно только чем он помешал в 2.0
просто лишний метод? или нарушает какие то каноны бытия?
https://github.com/yiisoft/yii2/commit/ ... 2aab4fa0a0

ну какие каноны? это удобно, но не кошерно, т.к. является хаком, как вы сами заметили.

Ответить