【问题标题】:Laravel - passsing variables to controllerLaravel - 将变量传递给控制器
【发布时间】:2014-11-12 08:47:33
【问题描述】:

我从控制器传递 2 个随机数以查看表单:

public function request()
{       
    $number1 = rand(10,20);
    $number2 = rand(0,10);
    return View::make('request', ['num1' => $number1, 'num2' => $number2]);
}

这2个数字以表格形式显示:

{{ Form::open(array('action' => 'MyController@verifyRequest', 'class'=>'bg-grey width')) }}
   {{ Form::label('Check sum: ') }}
   {{ Form::label($num1. ' + '. $num2. ' = ') }}
   {{ Form::text('checksum') }}
{{ Form::close() }} 

现在如何将这两个变量传递给控制器​​方法“verifyRequest”以检查数字的总和?

public function verifyRequest()
{   
    $sum = ???

【问题讨论】:

  • 如果这样做的目的是什么?
  • 出于安全考虑。还是我错过了什么?
  • 你肯定是。这个想法从上到下都是不安全的。
  • 那我该怎么办
  • 您应该从解释原始任务开始。我们现在只看到了与瞄准无关的奇怪尝试。

标签: php laravel view controller checksum


【解决方案1】:

您可以将这些数据放入会话(可能是更好的解决方案)或将隐藏字段添加到表单中:

{{ Form::hidden('num1', $num1) }}
{{ Form::hidden('num2', $num2) }}

现在您可以在控制器中使用:

$sum = Input::get('num1') + Input::get('num2');

【讨论】:

  • @Tomas Turan:你知道你不能信任用户输入吗?
  • @zerkms 是否与隐藏输入有关?
  • @Tomas Turan:是的。用户输入由客户端发送,因此可以伪造
  • @TomasTuran 使用隐藏字段的问题是用户可以将它们放在任何他想要的地方,所以他总是可以用1+1=2 填写表格并且它总是正确的(在控制器中你无法跟踪它如果您不使用会话)
  • 但是用户如何在隐藏的字段中输入数据?
【解决方案2】:

您可以在session 处插入num1 和num2 求和结果并签入verifyRequest 方法。

【讨论】:

    【解决方案3】:
      {{ Form::open(array('action' => 'MyController@verifyRequest', 'class'=>'bg-grey width')) }}
       {{ Form::label('Check sum: ') }}
       {{ Form::label($num1. ' + '. $num2. ' = ') }}
       {{ Form::text('checksum') }}
       {{ Form::hidden('num1', $num1) }}
       {{ Form::hidden('num2', $num2) }}
       {{Form::submit('Click Me!');}}
    {{ Form::close() }} 
    

    在控制器中

     public function verifyRequest()
     {   
        $num1 = $_POST['num1'];
        $num2 = $_POST['num2']
        $checksum = $_POST['checksum']
        //Do whatever you want
     }
    

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2021-12-30
      • 2014-08-29
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 2017-12-27
      相关资源
      最近更新 更多