Laravel 验证码类的大坑

做出来的样子是这样的:

登录界面
1.首先在laravel的项目中引入验证码的类vcode.php
文件再我的百度云网盘,自行下载,地址是 https://pan.baidu.com/s/1bpxydf5,里面有详细的代码段。
在项目里创建一个文件夹org->code->vcode.class.php,把原来的文件改名成vcode.class.php
引入类

在控制器里引入文件,路径千万不能错

require_once '..\resources\org\code\vcode.class.php';

2.写路由

Route::group(['prefix' => 'auth','namespace' => 'Auth'], function () {
    //登录认证路由
    Route::get('login', 'AuthController@getLogin')->name('login');
    Route::post('login', 'AuthController@postLogin');

    //验证码
    Route::get('code', 'AuthController@code');

    //退出清除session
    Route::get('logout', 'AuthController@getlogout')->name('logout');

   //注册用户路由
    Route::get('register', 'AuthController@getRegister')->name('register');
    Route::post('register', 'AuthController@postRegister');

   //重置密码
    Route::controllers([
        'password' => 'PasswordController',
    ]);

});

3.写验证码的方法

public function code()
    {
        $vcode = new \Vcode(80, 35, 4);
        //参数(宽,高,验证码的数量)
        //将验证码放到服务器自己的空间保存一份
        $_SESSION['code'] = $vcode->getcode();
        //将验证码图片输出
        $vcode->outimg();
        dump($vcode);

    }

在文件里,下面的代码段还能修改验证码的大小

$fontsize=rand(4,15); //字体大小

4.前端代码段

<img src="{{url('auth/code')}}" alt="" onclick="this.src='{{url("auth/code")}}?'+Math.random()" >

指明了验证码的路由,因为浏览器会保存code的session,所以为了让点击后能顺利地更换图片,需要在后面加上Math.random( ).

最大的坑来了,显示不出验证码还给你报错,报错信息这样的:Call to undefined function imagecreate()
那是因为你没有在php环境中打开GD库,解决方法如下:

这里写图片描述

根据上面的路径,找到文件php.ini,用记事本打开,找到下图的代码段,去掉它前面的分号;

这里写图片描述

5.验证用户输入的验证码是否正确
这个后续开展

好了,一切问题OK!

猜你喜欢

转载自blog.csdn.net/weixin_40682842/article/details/78869407