如何以及在何处使用 htmlspecialchars() 或 {{}}?
How and where exactly is htmlspecialchars() or {{}} to be used?
什么时候使用 htmlspecialchars()?
我知道 laravel {{}} 会自动转义,但我有一个情况我不知道如何实现 {{}} - 请参阅 "view" 示例,所以我会改为 htmlspecialchars() 。据我所知,每次我输出以前存储在数据库中的信息时都应该使用它,但就我而言,我也有图片,这些图片存储在服务器上的一个文件夹中。一旦用户尝试上传图片,他就会收到带有 successfully/unsuccessfully 上传图片名称的错误消息(红色 <div>
)。那需要转义吗?我不知道是否应该转义视图信息。为了让错误消息仍然保持红色,我决定在控制器中使用 htmlspecialchars(),我认为这是非常错误的?
控制器
if (......)
{
$msgs[] = '<div style="color:red">Could not upload: ' . htmlspecialchars($_FILES['image']['name'][$key]) . ' - picture size should be less than 10MB, in the following formats: jpg, jpeg, gif, png, bmp.</div>';
}
else
{
$fileToMove = $_FILES["image"]["tmp_name"][$key];
$newFileLoc = 'images' . DIRECTORY_SEPARATOR . time() . $_FILES['image']['name'][$key];
move_uploaded_file($fileToMove, $newFileLoc);
$msgs[] = '<div>Picture ' . htmlspecialchars($_FILES['image']['name'][$key]) . ' has been successfully uploaded to the gallery!</div>';
}
}
在内部,当您在 blade 语法中使用 {{ }}
时,我相信它会调用 e()
方法。所以你应该使用 e($someString)
.
而不是 htmlspecialchars($someString)
在将用户之前提交给系统的数据放到页面上时,您应该随时使用它。
什么时候使用 htmlspecialchars()?
我知道 laravel {{}} 会自动转义,但我有一个情况我不知道如何实现 {{}} - 请参阅 "view" 示例,所以我会改为 htmlspecialchars() 。据我所知,每次我输出以前存储在数据库中的信息时都应该使用它,但就我而言,我也有图片,这些图片存储在服务器上的一个文件夹中。一旦用户尝试上传图片,他就会收到带有 successfully/unsuccessfully 上传图片名称的错误消息(红色 <div>
)。那需要转义吗?我不知道是否应该转义视图信息。为了让错误消息仍然保持红色,我决定在控制器中使用 htmlspecialchars(),我认为这是非常错误的?
控制器
if (......)
{
$msgs[] = '<div style="color:red">Could not upload: ' . htmlspecialchars($_FILES['image']['name'][$key]) . ' - picture size should be less than 10MB, in the following formats: jpg, jpeg, gif, png, bmp.</div>';
}
else
{
$fileToMove = $_FILES["image"]["tmp_name"][$key];
$newFileLoc = 'images' . DIRECTORY_SEPARATOR . time() . $_FILES['image']['name'][$key];
move_uploaded_file($fileToMove, $newFileLoc);
$msgs[] = '<div>Picture ' . htmlspecialchars($_FILES['image']['name'][$key]) . ' has been successfully uploaded to the gallery!</div>';
}
}
在内部,当您在 blade 语法中使用 {{ }}
时,我相信它会调用 e()
方法。所以你应该使用 e($someString)
.
htmlspecialchars($someString)
在将用户之前提交给系统的数据放到页面上时,您应该随时使用它。