在thinkphp5中如何抛出异常状态码(比如401,403,404等),因为这些能极大的给用户以良好的体验。
因为在上线阶段,任何的系统错误信息都不能让浏览用户给看到,比如404(Not Found)页面我们应该直接抛出一个404异常,最好是配合一个404页面来展示出来,给用户以最好的体验,这是非常重要的。
要做到这一点,首先要在你的配置文件将调试模式关闭(在开发阶段要打开):
1
|
'app_debug'
=> false,
|
然后在配置文件中配置404等页面的模板路径(APP_PATH指的是application路径):
1
|
'http_exception_template'
=> [ 404 => APP_PATH.
'404.html'
, 403 => APP_PATH.
'404.html'
,]
|
404页面部分代码如下:
1
2
3
4
5
6
7
|
<
div
class
=
"bg"
>
<
div
class
=
"cont"
>
<
div
class
=
"c1"
><
img
src
=
"/public/static/404/01.png"
class
=
"img1"
/></
div
>
<
h2
><?
php
echo $e->getMessage()?>
<!--输出抛出异常信息-->
</
h2
>
<
div
class
=
"c2"
><
a
href
=
"#"
class
=
"re"
>返回论坛</
a
><
a
href
=
"#"
class
=
"home"
>网站首页</
a
><
a
href
=
"#"
class
=
"sr"
>搜索一下页面相关信息</
a
></
div
>
<
div
class
=
"c3"
>您可能输入了错误的网址,或者该网页已删除或移动,千锋PHP</
div
>
</
div
></
div
>
|
下面来进行测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
if
(Request::instance()->isAjax()) {
$data
= input();
$info
= [];
$where
=
''
;
switch
(
$data
[
'msg'
]) {
case
'验证码'
:
$info
= [
'y'
=>
'输入正确'
,
'n'
=>
'输入错误'
,
];
$where
= session::get(
'admin_login_session'
) == md5(
$data
[
'param'
]);
break
;
}
if
(
$where
) {
echo
'{"info":"'
.
$data
[
'msg'
] .
$info
[
'y'
] .
'","status":"y"}'
;
//注意ValidForm返回格式(json)
}
else
{
echo
'{"info":"'
.
$data
[
'msg'
] .
$info
[
'n'
] .
'","status":"n"}'
;
//注意ValidForm返回格式(json)
}
}
else
{
throw
new
\think\exception\HttpException(403,
'~~~千锋PHP通知您非法请求~~~'
);
//因为此处只能是ajax来访问,当直接在浏览器中访问该方法时,
可以抛出一个403,其他类似),此处有简写方法abort代替
}
|