Страница 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
ну какие каноны? это удобно, но не кошерно, т.к. является хаком, как вы сами заметили.