表单验证错误PHP Laravel

时间:2014-06-30 11:27:12

标签: php laravel-4

我对处理表单验证错误有疑问。 当它们由于输入而出错时,我向用户显示消息。但是当它们由于系统完整性而出现错误时,我的意思是例如隐藏的输入和不支持的值,我不认为向用户显示这种类型的错误是个好主意,我应该显示400页。

那么处理这类错误的最佳方法是什么?

顺便说一句,我使用的是Laravel4。

抱歉我的英文不好,谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

内部(例如安全)相关错误确实不应该暴露给用户。这样,您就不会向恶意用户提供任何可能暴露错误或安全漏洞的关键信息,从而提高完整性。正如您在问题中所写,根据错误类型,您可能会返回404错误页面。

例如CSRF表单保护,揭示错误甚至可能会破坏安全措施,具体取决于实现和暴露的数据。

我建议您查看Google Webmaster Tools HelpWikipedia,其中详细说明了(4xx)HTTP状态代码。然后选择最适合您的用例。

使用PHP.ini和/或.htaccess关闭错误报告(取决于您的服务器设置 - 我假设您使用Apache)。您可以执行以下操作,以便不向用户返回错误和关键信息。例如,您可以阻止服务器将PHP版本(X-Powered-By标头)发送到用户浏览器。您可以完全覆盖它或remove it。然后还使用"pretty urls"来阻止用户了解您的服务器端编程语言。我见过的最常见的措施是禁用“error_reporting”(无论如何,这是生产代码的标准 - laravel在app config中提供error reporting options)。另请查看此网站:Advanced PHP Error Handling via htaccess

在评论中,托马斯提到了另一个案例,建议获取尽可能多的数据来记录和解决问题。我不了解您的编程技巧和经验,但在Google上搜索您的具体问题。相信我,答案已经存在。不要首先专门搜索Laravel,因为这可能无法返回所需的结果。尝试自己调整给定的解决方案Laravel语法。这也有助于我更好地了解框架。

要简短,请根据您的用例决定返回给用户的内容。还要考虑是否显示信息是必不可少的。

如果你还在苦苦挣扎,请告诉我,我们会尽力让它解决。

答案 1 :(得分:0)

你应该使用

Session::flash()

Session::flash()的示例:

if(user_timeout())
{
 Session::flash("error_timeout", "exceeded");
}

以下是观点:

if(Session::has("error_timeout"))
{
  ?>
  <p class='alert alert-danger'>You should login again to continue. </p>
<?php
}