欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Laravel-5.1 将mews captcha整合到项目中!

程序员文章站 2022-04-24 15:13:51
...
经过摸索,终于能在laravel 5.1中应用验证码了。

因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包!

提示: github上的package中往往会有使用说明,照着上面的实现,一般都能做出来。

我使用的是mews captcha

git 上的地址: https://github.com/mewebstudio/captcha 上面的使用很详细了。

动手实现:

-- 手动进入 laravel 项目目录

-- 在对应目录下,找到composer.json文件,打开它,添加如下语句:

如图:添加语句

{  "require": {    ....    ....    ....    "mews/captcha": "~2.0"  },  "minimum-stability": "dev"}

-- 执行composer update, 如果报错,请先执行composer self-update, 然后再执行 composer update

-- 找到config/app.php打开,添加如下语句:

1.打开这个文件,找到providers项,添加如下语句

Mews\Captcha\CaptchaServiceProvider::class,

2.找到aliases项,添加如下语句:

添加语句:

'Captcha' => Mews\Captcha\Facades\Captcha::class,

-- cmd窗口中执行 php artisan vendor:publish

通过上面的所有步骤,查看目录,你会发现在vendor下多了mews目录,并且你可以使用命名空间 use Captcha, 在config/captcha.php中存在一个验证码的配置文件captcha.php。

-- 上面的所有步骤在 https://github.com/mewebstudio/captcha 中同样存在!

我们来看一看新增的vendor/mews目录

我们找到vendor/mews/captcha/src/captcha.php

查找public 方法, 发现:

public function create($var) --- 生成验证码

public function check($var) --- 判断输入和验证码是否相等

public function src($var) --- 输出img属性src的链接

public function img($var) --- 输出img标签

-- 其中,$var 参数就是,config/captcha.php 中 对应的键,分别可以是:

default, flat, mini, inverse 代表了四种风格的验证码!可以针对不同风格进行配置,直接在config/captcha.php中修改配置项

-- 实例:

1.在app/Http/routes.php中配置路由

其中captcha/test, 表示测试路径, 映射 CaptchaController 下的 public function index() {}

captcha/mews 映射验证码的输出,映射 CaptchaController 下的 public function mews() {}

2.创建控制器

在cmd窗口中,直接输入

php artisan make:controller CaptchaController --plain

如果提示成功,则说明在 app/Http/Controllers/ 下产生了新文件 CaptchaController.php

3.在app/Http/Controllers/CaptchaController.php中新建index() 和 mews() 方法

4.创建视图

在resources/views/目录下创建captcha目录,分别新建index.blade.php 并且大概做个布局和样式调整

Learn Laravel 5.1

该页面仅仅用来学习验证码

mews

@if(count($errors) > 0)
    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif
Laravel-5.1  将mews captcha整合到项目中!

这时候输入:http://your-host/captcha/test 查看

这是我的布局和captcha

5. 添加路由到app/Http/routes.php

我通过post提交到后台进行测试

6.在TestController中cpt方法如下:

 'required|captcha'    ];    $messages = [      'cpt.required' => '请输入验证码',      'cpt.captcha' => '验证码错误,请重试'    ];   //如果仅仅验证captcha的值可以   //采用 Captcha::check(Input::get('cpt')); //返回bool    $validator = Validator::make(Input::all(), $rules, $messages);    if($validator->fails()) {      return Redirect::back()->withErrors($validator);    } else {      return "验证码OK!";    }  }}

以上,测试如下,

验证错误:

验证正确:

这里没有采用使用Captcha::check()的方式,具体情况具体分析吧。