2017年8月

Laravel框架实现404页面500页面友好提示

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是实现做好的模板,直接调用即可。

Laravel条形码/二维码生成实战实例

0x01 安装

使用composer直接拉取组件milon/barcode

laravel 5.0/5.1

composer require milon/barcode 5.1

laravel 5.2/5.3/5.4

composer require milon/barcode 5.3

然后在config/app.php增加

'providers' => [
    ...
    Milon\Barcode\BarcodeServiceProvider::class,
    ...
]

如果需要更改配置直接使用命令

php artisan vendor:publish

添加别名

'aliases' => [
    ...
    'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class,
    'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class,
]

该组件支持的条形码类型:
PDF417,C39,C39 +,C39E,C39E +,C93,S25,S25 +,I25,I25 +,C128,C128A,C128B,C128C等等

0x02 使用

laravel 5.2/5.3/5.4在use进DNS1D和DNS2D之后,直接就可以使用

echo DNS1D::getBarcodeSVG("4445645656", "PHARMA2T");
echo DNS1D::getBarcodeHTML("4445645656", "PHARMA2T");
echo '<img src="data:image/png,' . DNS1D::getBarcodePNG("4", "C39+") . '" alt="barcode"   />';
echo DNS1D::getBarcodePNGPath("4445645656", "PHARMA2T");
echo '<img src="data:image/png;base64,' . DNS1D::getBarcodePNG("4", "C39+") . '" alt="barcode"   />';
echo DNS1D::getBarcodeSVG("4445645656", "C39");

laravel 5.1需要进行单例引入才可以使用

 private static $DNS1D;

/**
 * PrintController constructor.
 * @param DNS1D $DNS1D
 */
public function __construct(DNS1D $DNS1D)
{
    self::$DNS1D = $DNS1D;
}

然后再使用

echo '<img src="data:image/png,' . self::$DNS1D->getBarcodePNG("425X5", "C128") . '" alt="barcode"   />';

现在就出现条形码了

最新文章

最近回复

  • 裤衩哥:可以要你的菊花吗?
  • admin:楼上+1
  • admin:吃瓜群众 为 落魂 打call
  • :牛逼了..........
  • 帮帮:厉害!谢谢了朋友!解决了我的问题。
  • 落魂:好多小伙伴找我要这个CSS样式,其实这个是使用的一套模块!大家可...
  • 星辰:您好,博主,有错误提示页面的css样式吗?
  • 落魂:是的,这是上次有人问,就研究了一下
  • gay:可以要你的菊花吗?
  • falost:个人决定如果做canvas 还是使用原生的比较好点

分类

归档

友情链接