【问题标题】:Laravel 5.3 - POST is polluted with GET valuesLaravel 5.3 - POST 被 GET 值污染
【发布时间】:2017-08-24 11:40:50
【问题描述】:

在(真实的)日子里,我们曾经使用$_GET$_POST!现在我们得到了 Laravel 的 \Request::input()。因此,这就是发生的事情:

if(\Request::isMethod('post'))
{
    $POST = \Request::input();
}

如果我在 $_GET 中有一个变量,那么值也会在 POST 中获取。

例如:

&x=1 //即在查询字符串中

$_POST['x'] = null; //因为它没有与表单一起发布,但它可能是因为有一个同名的字段

$POST['x'] = 1; //在 GET 中,但应该为 null,因为它不在 $_POST 中!

任何解决方案只获得 POSTed vars?还是我应该只使用 $_POST?

谢谢

【问题讨论】:

  • 感谢@ToothlessRebel 的帮助。现在我使用\Request::instance()->request 而不是\Request::input()
  • 其实是\Request::instance()->request->all()得到数组
  • 毕竟是 php,所以如果不想调用那些奇怪的函数,你可以随时使用 $_POST :D
  • 这很有趣,如果你查看Illuminate\Http\Request 类,你可以看到getInputSource() 方法完全相同,但它的protected。最重要的是,它被拉入公共方法input() 以获取输入作为get 和post 的数组($input = $this->getInputSource()->all() + $this->query->all())。

标签: php post laravel-5.3


【解决方案1】:

我相信从Request 实例获取此信息的唯一方法是访问query (GET) 或request (POST) 属性。这些都是ParameterBag 实例,因此您可能会使用它们的->get() 方法来访问您想要的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2021-08-02
    • 2012-01-08
    • 2020-09-17
    • 2016-10-13
    • 2016-02-10
    • 2014-03-09
    相关资源
    最近更新 更多