Страница 1 из 1

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

Добавлено: 2015.02.27, 16:35
Demon_id
Ребята, чё вообще происходит? Зачем это сделали?

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

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

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

Добавлено: 2015.02.27, 16:51
astronin
предполагаю для защиты, чтоб вот так вот не делали

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

Добавлено: 2015.02.27, 16:55
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); 

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

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

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

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

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

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

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

Добавлено: 2015.02.27, 18:31
Demon_id
ок, а с $_REQUEST что?

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

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

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

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

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

Добавлено: 2015.02.27, 18:52
zelenin
хак

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

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

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

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

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

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

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

Добавлено: 2015.02.27, 18:56
Demon_id
zelenin писал(а):хак

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

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

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

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

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

Добавлено: 2015.02.27, 18:58
zelenin
Demon_id писал(а):
zelenin писал(а):хак

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

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

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

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

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

Добавлено: 2015.02.27, 19:07
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);
    } 

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

Добавлено: 2015.02.27, 19:08
zelenin
getParam кстати именно тот хак, который я предложил)

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

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

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

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

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