Php 在Laravel集合中使用双花括号

Php 在Laravel集合中使用双花括号,php,laravel-5,laravel-blade,laravelcollective,Php,Laravel 5,Laravel Blade,Laravelcollective,我正在尝试创建这样的表单来创建用户,该表单也将使用表单模型绑定来显示数据: {{ Form::open(['url' => 'admin/users/create']) }} <div class="form-group"> {{ Form::label('first_name', 'First Name : ') }} {{ Form::text('first_name', null, ['class' => 'form-con

我正在尝试创建这样的表单来创建用户,该表单也将使用表单模型绑定来显示数据:

{{ Form::open(['url' => 'admin/users/create']) }}

    <div class="form-group">
        {{ Form::label('first_name', 'First Name : ') }}
        {{ Form::text('first_name', null, ['class' => 'form-control']) }}
    </div>

    <div class="form-group">
        {{ Form::label('last_name', 'Last Name : ') }}
        {{ Form::text('last_name', null, ['class' => 'form-control']) }}
    </div>

{{ Form::close() }}
{{Form::open(['url'=>'admin/users/create'])}
{{Form::label('first_name','first name:')}
{{Form::text('first_name',null,['class'=>'Form control'])}
{{Form::label('last_name','last name:')}
{{Form::text('last_name',null,['class'=>'Form control'])}
{{Form::close()}}
但是,它显示的代码不是实际视图,因此我在浏览器中看到以下代码:

<form method="POST" action="http://localhost:8000/admin/users/create" accept-charset="UTF-8">

    <input name="_token" type="hidden" value="X5MA46MJctYOYeMtZF1RoQKYmWDtAbsSoxwoOA8Y">

    <label for="first_name">First Name : </label> 
    <input class="form-control" name="first_name" type="text" id="first_name">

    <label for="last_name">Last Name : </label> 
    <input class="form-control" name="last_name" type="text" id="last_name">

</form>

名字:
姓氏:
但是当尝试使用
{!!!!}
作为开括号和闭括号时,代码会起作用并显示实际视图

我仍然不明白为什么我不能使用
{{}
作为我的括号使用,如果你看到这一点,它的工作很好

也有点害怕XSS攻击,就像在显示未替换数据部分所说的那样:

注意:在回显用户提供的内容时要非常小心 你的申请。始终使用双大括号语法来 转义内容中的任何HTML实体

有什么有用的解释吗?多谢各位


注意:我使用的是Laravel版本5.1.40(LTS)

,因为{}用于转义HTML实体,以防止从服务器/数据库显示输入的XSS攻击

因此,如果有人在您的数据库中插入了恶意代码,那么用户将无法执行该代码,而只是在屏幕上打印出来。像这样

$dbValue = "<script> Some evil code </script>";

{{ $dbValue }}
$dbValue=“一些邪恶的代码”;
{{$dbValue}}
它将以如下方式输出

<script> Some evil code </script>
一些邪恶的代码
因为Laravel集合HTML表单正在生成HTML供您显示,所以您必须使用{!!!!}来防止转义

{!! "<b>Bold Text</b>" !!}
{!!“粗体文本”!!}
然后它会输出这个

粗体文本


对于生成HTML来说,这很好,但是您必须小心将值发送到服务器并显示给用户。在那里,您必须始终使用{{}}来转义数据

使用表单模型绑定来显示数据怎么样?我将不得不使用表单来显示数据以进行编辑。它会自动转义表单的模型数据值,所以这里没有什么可担心的。@GujaratSantana有什么原因让你不接受答案吗?忘了问,为什么我不能使用
{}
而不是
{!!!!}
我看到其他人可以使用
{}
因为laravel HTML包必须生成HTML以便在视图中输出,所以如果使用{{},则这些大括号将转义生成的表单HTML,而您将看到页面上的代码而不是表单