Laravel 项目使用 gregwar/captcha 验证码
打赏作者

chenxin

用这个验证码还不如用这个https://github.com/mewebstudio/captcha更简单。。。。

JellyBool 回复 chenxin

额。。。这个我第二个视频会录的。都是比较好的验证码解决方案

John Howard

老大
如何设置纯数字的形式?干扰线如何去除?背景颜色如何设置?

JellyBool 回复 John Howard

数字的形式,可以试试这样:

$builder = new CaptchaBuilder(‘123456789’);

背景颜色可以这样:

$builder->setBackgroundColor($r, $g, $b);

//比如
$builder->setBackgroundColor(255, 255, 255);
$builder->build($width = 140, $height = 60, $font = null);



John Howard 回复 JellyBool

$builder = new CaptchaBuilder(‘123456789’);

这个方法好像不可行,显示出来的验证码每一个都会是123456789

JellyBool 回复 John Howard

那这样,你在 app 目录下创建一个 文件夹,比如就是 Builder (注意大小写),在文件夹里面创建这个 class DigiPhraseBuilder.php:

class DigiPhraseBuilder implements PhraseBuilderInterface
{
    /**
     * Generates  random phrase of given length with given charset
     */
    public function build($length = 5, $charset = '123456789')
    {
        $phrase = '';
        $chars = str_split($charset);

        for ($i = 0; $i < $length; $i++) {
            $phrase .= $chars[array_rand($chars)];
        }

        return $phrase;
    }

    /**
     * "Niceize" a code
     */
    public function niceize($str)
    {
        return strtr(strtolower($str), '01', 'ol');
    }
}

然后使用的时候可以这样试试:

$builder = new CaptchaBuilder(‘’,new App\Builder\DigiPhraseBuilder());

注意命名空间和psr-4自动加载写对。

思路是这样的:就是自定义了一个 PhraseBuilder,传进去就好。

328333982 回复 JellyBool

##赞一个,不错

John Howard

那个干扰线我在配置文件里,怎么也没找到,如何设置呢?

q8961152

把debugbar和DbExporter加上吧哈哈

JellyBool 回复 q8961152

OK … 可以的。

chenze007

Laravel Generator 能简单介绍一下么
https://github.com/InfyOmLabs/laravel-generator
InfyOmLabs/laravel-generator
关于单元测试的例子能写一下么 ,对于这一块没啥概念,老程序员对我说一定要写单元测试,但是不知道确切的作用

JellyBool 回复 chenze007

可以,不够这个我得看一下,可能得排在这个系列后面一点点

chenze007 回复 JellyBool

谢了,我现在都是以你为榜样,榜样的力量

chenyuanqi

我想问的是,教程里快速切换桌面程序使用的是什么软件?

JellyBool 回复 chenyuanqi

Alfred。。传说中的神器,你也可以直接使用 spotlight

chenyuanqi 回复 JellyBool

谢谢,这下子可以愉快的装逼了

Oran

https://github.com/toplan/laravel-sms 这个发短信的包,也是不错的。@JellyBool

JellyBool 回复 Oran

可以的,这个可以走一个。。。

John Howard 回复 JellyBool

目前也需要这个。

mikughost

博主能否去在实验楼平台上发布相关学习文章呢?

JellyBool 回复 mikughost

现在不会去那边发布了,之前在那边有文章教程是因为我在那边实习。

xrpeng

怎么让它只输出4位验证码

JellyBool 回复 xrpeng

这样试试:

$builder = new CaptchaBuilder();
$builder->setMaxOffset(4);
xrpeng 回复 JellyBool

和原来一样没变- -!

JellyBool 回复 xrpeng

纳尼,我看了一下源码,貌似是这个样子的。

就是这个 https://github.com/Gregwar/Captcha/blob/master/CaptchaBuilder.php#L185-L190

xrpeng 回复 JellyBool

我也看了源码,改了没用才来问的…具体代码:

$builder = new CaptchaBuilder();

    $builder->setMaxOffset(4);

    $builder->build(160, 60, null);

    header('Cache-Control: no-cache, must-revalidate');

    header('Content-type: image/jpeg');

    $builder->output();
xrpeng 回复 JellyBool

OK了,谢谢大佬~

wsxyhn753

每一个用户在浏览登录页面的时候都会看到二维码,后台为每一位用户创建了一个session,这个session有周期吗,时间长了会不会有很多没用的session数据?

zjhjh123

我调用 $builder->build(160,40,null); 就报错

count(): Parameter must be an array or an object that implements Countable
in CaptchaBuilder.php (line 333)

这又是什么情况呢?

JellyBool 回复 zjhjh123

参数传错了呗

zjhjh123 回复 JellyBool

我啥都没有传,我就用
use Gregwar\Captcha\CaptchaBuilder;

builder=newCaptchaBuilder;builder = new CaptchaBuilder; builder->build();
header(‘Content-type: image/jpeg’);
$builder->output();
就这样的,它就是报那个错误,难道是我的php版本有问题 PHP 7.2.0alpha1 (cli)

JellyBool 回复 zjhjh123

额。。。你在哪里使用了 count() 吧,这个 count() 参数不支持吧

zjhjh123 回复 JellyBool

我没有使用count(),我是新安装的laravel和Gregwar\Captcha,啥都没有改,直接就给报错啦,

JellyBool 回复 zjhjh123

额,那我就不知道。

jaynele

老师,jpush package 可以讲下吗?

stringer

https://packagist.org/packages/francescomalatesta/laravel-api-boilerplate-jwt @JellyBool 这个包要是能讲一下就好了 dingo/api + jwt-auth + laravel-cors , 要是能在配上 enstruct 权限管理 就完美了 _φ(❐_❐✧

YanLong_Rui

第一个用户点击获取验证码 这个时候会在session中存储一个验证码 但是这个用户没有点击登录,这个时候第二个用户又点击了获取验证码 那么第一个用户再点击登录按钮验证码肯定校验错误啊 @教主

ZhangqiwuAhri

happy hacking