php - 这个 Blade 卫生是否正常工作(双花括号与三花括号)?

标签 php laravel filter laravel-blade

很抱歉,这很可能是我自己的误解,而不是实际存在的问题。我对 Laravel 和 Blade 模板相当陌生,我正在尝试输出从 Input::get 中获取的一些字段。但是,当我通过双花括号和三花括号输出字段时,输出之间似乎没有区别。

这是我的观点的摘录:

@ $data = Input::only('name', 'date');

{{ "Unfiltered input: ".$data['name'] }}

<br />

{{{ "Filtered input: ".$data['name'] }}}

但是,当我提供带有特殊字符或代码的输入并查看呈现页面的源代码时,我看到为两者呈现的相同、未过滤的输入。

根据 Laravel documentation ,我想在输出到 View 时严格使用 {{{ }}},但我没有看到它实际上被“转义或净化”。我还没有完全开始设置 Validation ,我认为这是安全和卫生的主要冲击,对吗?但是现在只关注这个,我是不是误解了三重花括号应该做什么?还是他们在幕后工作,而我只是没有看到最终结果?像这样输出用户输入时,我还应该做些什么吗(除了设置验证层之外)?

最佳答案

拉拉维尔 4

双花括号和三花括号之间的唯一区别在于,三花括号通过 e() 辅助函数运行值,这只是 PHP htmlentities 函数的快捷方式。

{{ "Unfiltered input: ".$data['name'] }}
{{{ "Filtered input: ".$data['name'] }}}

编译成:

<?php echo "Unfiltered input: ".$data['name']; ?>
<?php echo e("Filtered input: ".$data['name']); ?>

但是,所有这些都发生在输出上。它与清理输入没有任何关系。

拉拉维尔 5

在 Laravel 5 中,Blade 语法发生了变化,双花括号 ({{ }}) 将转义输出,并且新的花括号双感叹号语法 ({!! !!}) 不会转义输出。

所以,

{{ "Filtered input: ".$data['name'] }}
{!! "Unfiltered input: ".$data['name'] !!}

编译成:

<?php echo e("Filtered input: ".$data['name']); ?>
<?php echo "Unfiltered input: ".$data['name']; ?>

关于php - 这个 Blade 卫生是否正常工作(双花括号与三花括号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503920/

相关文章:

php - Laravel:验证请求中的空数组

laravel - 如何从不是 Controller 方法的方法发送响应?

filter - Solr 过滤器 fq 中的特殊字符

cocoa - 添加范围栏来过滤 Cocoa 中的搜索结果?

php - Magento 中的语言切换

php - 通过 PHP POST 方法获取 elRTE 内容

php - 使用TortoiseSVN删除冲突文件(本地文件)后无法更新文件

php - 一旦输入是两位数,查询将不会返回数据,PHP/MySQL

php - laravel-echo-server 404 尝试进行身份验证时

json - Redux:过滤数据并回滚到Reducer 中的初始数据状态?