我想设置在Laravel 5.1中引发错误时向用户显示的自定义消息。例如,在控制器中,我可能有:
if(!has_access()){
abort('401', 'please contact support to gain access to this item.');
}
然后,在我的自定义错误页面上,我将显示以下错误:
$exception->getMessage();
但是,如果发生SQL错误或其他事件怎么办?那是否还设置了我将在错误页面上不知不觉中输出的异常消息?
用于getMessage()的PHP文档对此没有太多详细介绍。
如何在不引入任何安全风险的情况下设置特定的异常消息?
但是,如果发生SQL错误或其他事件怎么办?那是否还设置了我将在错误页面上不知不觉中输出的异常消息?
可能是的。PHP不保证异常消息的内容可以“安全”显示给用户,并且某些类很可能会抛出异常,其中包括敏感信息。
如果你想使用异常显示错误给用户,使用的具体子类,Exception
对于那些异常,只打印消息,如果例外是子类的实例,例如,
class UserVisibleException extends Exception {
// You don't need any code in here, but you could add a custom constructor
// if you wanted to.
}
// Then, in your abort() function...
throw new UserVisibleException($message);
// Then, in your exception handler...
if ($exc instanceof UserVisibleException) {
print $exc->getMessage();
} else {
print "An internal error occurred.";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句