我想在Laravel中使用e函数,它相当于PHP的htmlentities函数。
在我的表单视图和控制器中,我试图保存一个使用e函数的文档,它看起来像这样:
表单视图:
{{ Form::text('client_name') }}
控制器:
$client = new Client;
$client->client_name = e(Input::get('client_name'));
$client->save();
假设我将<script type="text/javascript">alert('gotcha!');</script>
写入client_name字段。然后我把它保存到数据库,但当它保存到数据库后重定向,它运行这个脚本一次!也只是为了确保e函数工作正常,我查看了我的数据库,它是预期的:
"<script type="text/javascript">alert('gotcha!');</script>"
我的问题是如何避免执行javascript alert('gotcha')
??
或者我把这个函数或htmlentities函数在错误的地方?'
谢谢!
您在错误的地方运行e()。转义最好用于数据的输出,而不是用于输入。
你的控制器应该这样做:
$client = new Client;
$client->client_name = Input::get('client_name');
$client->save();
您的表单视图可以使用以下内容-因为表单会自动"转义"数据
{{ Form::text('client_name') }}
但是在你创建了客户端并重定向之后——我打赌你在某个地方做了这个
{{ $client->client_name }}
你应该改成这个
{{{ $client->client_name }}}
注意第三个{}-它将自动为您转义数据