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