Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel larvel old()输入偶尔返回一个数组_Laravel_Laravel Blade - Fatal编程技术网

Laravel larvel old()输入偶尔返回一个数组

Laravel larvel old()输入偶尔返回一个数组,laravel,laravel-blade,Laravel,Laravel Blade,我的bug跟踪器显示了以下刀片线的一些例外情况: 这是由old()帮助程序造成的,它以某种方式为'email'检索数组,而不是字符串 现在,通常情况下,当提交带有此输入的表单时,old('email')值应该只包含一个字符串,当控制器重定向回以进行验证时。然而,我注意到一些黑客脚本正在我的应用程序上运行,它们试图通过发送特定的POST有效负载和尝试URL来破坏内容 其中一个有效载荷的形式必须为&email[]=abc&email[]=def,或以数组形式发送电子邮件输入的其他语法。默认登录验

我的bug跟踪器显示了以下刀片线的一些例外情况:


这是由
old()
帮助程序造成的,它以某种方式为
'email'
检索数组,而不是字符串

现在,通常情况下,当提交带有此输入的表单时,
old('email')
值应该只包含一个字符串,当控制器重定向回以进行验证时。然而,我注意到一些黑客脚本正在我的应用程序上运行,它们试图通过发送特定的POST有效负载和尝试URL来破坏内容

其中一个有效载荷的形式必须为
&email[]=abc&email[]=def
,或以数组形式发送电子邮件输入的其他语法。默认登录验证程序
'email'=>'required | string'
似乎没有对其进行过滤,因此我在视图中出现了一个错误

我正在寻找一种简单的方法,以尽可能少的代码消除此异常,因为这在许多视图中都会发生。这样就足够了,但有点复杂,因为它从会话中检索了两次
'email'
键:

{{is_string(old('email'))?old('email'):null}

因此,欢迎任何建议来缩短此语法,最好是不检索会话变量两次的语法。

我决定创建一个新函数,它是对
old()
稍加修改的版本:

//app/helpers.php
如果(!function_存在('old_string')){
/**
*'old()` helper的包装器,当数组设法进入时不会中断。
*@param string$key
*@param混合$default
*@返回字符串|空
*/
函数old_字符串($key,$default=null)
{
$val=old($key,$default);
返回值为字符串($val)?$val:null;
}
}

这样,我可以在我的视图中使用
旧字符串('email')
,我特别希望使用字符串,而不会影响原始函数。

您也可以创建自己的函数来实现这一点,并调用您的函数,然后它只是一个函数调用,不,三个是的,您是对的,我创建了一个优雅的解决方案,我将添加它作为答案。
htmlspecialchars() expects parameter 1 to be string, array given