0x01 背景

  程序开发的时候,我们开发者都会开启debug,来调试程序,以及打印我们想看到的数据。但是当项目上线的时候,如果再开启debug,那就是在给广大的黑客们开启属于他们的机会了。虽然Laravel框架关闭debug后就不会将报错信息显示在页面上,但是也并不美观。而且纯英文的提示在国内来看也并不太好。所以这个时候就需要做友好的提示页面了

0x02 正文

  1. 要实现友好提示其实就是抓取每个页面的状态码,如果不是200,那么就根据状态码进行区分返回404或者500页面
  2. Laravel框架中有一个默认抓取并返回报错信息的文件,

appExceptionsHandler.php

  1. 我们来修改一下这个文件的render方法
    public function render($request, Exception $e)
    {
        if ($e instanceof ModelNotFoundException) {
            $e = new NotFoundHttpException($e->getMessage(), $e);
        }

        $debug = config('app.debug', false);  // 判断debug是否开启
        if (empty($debug)) {  // 如果debug关闭
            $result = method_exists($e, 'getStatusCode');
            if (!empty($result)) {
                // 404友情提示
                $statusCode = $e->getStatusCode();
                if ($statusCode == 404) {
                    return response()->view('error', [
                        'info' => '抱歉,指定的页面不存在.',
                        'url' => '/',
                        'code' => 404,
                        'msg' => 'Sorry, page not found.'
                    ]);
                }
            } else {
                // 出现错误提示
                return response()->view('error', [
                    'info' => '抱歉,好像出错了.',
                    'url'  => '/',
                    'code' => 503,
                    'msg'  => 'Error,It have been wrong.'
                ]);
            }
        } else {
            // 如果开启debug模式
            return parent::render($request, $e);
        }

    }

0x03 结语

error是实现做好的模板,直接调用即可。