cch*_*man 6 php filter laravel blade
我很抱歉这很可能是对我自己的误解,而不是存在实际问题.我对Laravel和Blade模板很新,而且我正在尝试输出一些从一个字段中取出的字段Input::get.但是,当我通过双花括号和三花括号输出字段时,输出之间似乎没有区别.
以下是我的观点的摘录:
@ $data = Input::only('name', 'date');
{{ "Unfiltered input: ".$data['name'] }}
<br />
{{{ "Filtered input: ".$data['name'] }}}
Run Code Online (Sandbox Code Playgroud)
但是当我提供带有特殊字符或代码的输入并且我查看渲染页面的源时,我看到为两者渲染的相同的未经过滤的输入.
根据Laravel文档,我想严格使用{{{ }}}何时输出到View,但我不认为它实际上是"转义或纯化".我还没有完全建立验证,我相信安全和卫生的主要原因是,对吗?但是现在只关注这个问题,我是否误解了三重花括号应该做什么?或者他们是否在幕后工作,而我最终没有看到它?在输出像这样的用户输入时,我还应该做些什么(除了设置验证层)吗?
pat*_*cus 11
双花括号和三花括号之间的唯一区别是三花括号通过e()辅助函数运行值,这只是PHP htmlentities函数的快捷方式.
{{ "Unfiltered input: ".$data['name'] }}
{{{ "Filtered input: ".$data['name'] }}}
Run Code Online (Sandbox Code Playgroud)
编译成:
<?php echo "Unfiltered input: ".$data['name']; ?>
<?php echo e("Filtered input: ".$data['name']); ?>
Run Code Online (Sandbox Code Playgroud)
但是,所有这些都发生在输出上.它与清理输入没有任何关系.
在Laravel 5中,Blade语法已更改,因此双花括号({{ }})将转义输出,并且新的花括号双感叹语法({!! !!})将不会转义输出.
所以,
{{ "Filtered input: ".$data['name'] }}
{!! "Unfiltered input: ".$data['name'] !!}
Run Code Online (Sandbox Code Playgroud)
编译成:
<?php echo e("Filtered input: ".$data['name']); ?>
<?php echo "Unfiltered input: ".$data['name']; ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |