php人机验证,89.人机验证(一) |《TDD 构建 Laravel 论坛笔记》| Laravel China 社区...
本系列文章为laracasts.com 的系列视频教程——Let's Build A Forum with Laravel and TDD 的学习笔记。若喜欢该系列视频,可去该网站订阅后下载该系列视频,支持正版;
本项目为一个 forum(论坛)项目,与本站的第二本实战教程 《Laravel 教程 - Web 开发实战进阶》 类似,可互相参照。
本节说明
对应视频教程第 89 小节:Recaptcha
本节内容
在之前,我们为了防止恶意程序自动发布话题而建立了关键词检测机制,在本节我们再为新建话题动作引入人机验证机制。我们将利用谷歌提供的 reCAPTCHA 来为我们的应用引入人机验证机制。首先我们需要登录,并注册 reCAPTCHA sites:
注册后,我们根据说明步骤依次进行。首先我们需要增加 reChaptcha 配置:
forum.env
.
.
RECAPTCHA_KEY=6LdpvGEUAAAAAKwswR10hSWgVT1ehMUeQkW50jni
RECAPTCHA_SECRET=6LdpvGEUAAAAALIvpi13rOcothX8L4xBtEQmxyP8
forum\config\services.php
'recaptcha' => [
'secret' => env('RECAPTCHA_SECRET')
]
];
接着我们修改模板,引入script和人机验证区域:
forum\resources\views\threads\create.blade.php
@extends('layouts.app')
@section('header')
@endsection
@section('content')
.
.
Publish
.
.
@endsection
现在我们进入新建话题页面:
然后我们接收前端的数据,后端发送 HTTP 请求进行人机验证。我们利用 Zttp 来发送请求。Zttp 是 Adam Wathan 为了让代码更富表现力以及简化常见用例而写的一个 Guzzle 的封装。我们来安装它:
$ composer require kitetail/zttp
修改控制器代码,增加人机验证:
forum\app\Http\Controllers\ThreadsController.php
.
use Zttp\Zttp;
.
.
public function store(Request $request)
{
$this->validate($request,[
'title' => 'required|spamfree',
'body' => 'required|spamfree',
'channel_id' => 'required|exists:channels,id'
]);
$response = Zttp::asFormParams()->post('https://www.google.com/recaptcha/api/siteverify',[
'secret' => config('services.recaptcha.secret'),
'response' => $request->input('g-recaptcha-response'),
'remoteip' => $_SERVER['REMOTE_ADDR']
]);
if (! $response->json()['success']) {
throw new \Exception('Recaptcha failed');
}
.
.
}
.
.
如果我们不进行人机验证直接发布话题,则会报错:
进行了人机验证之后再发布话题:
php人机验证,89.人机验证(一) |《TDD 构建 Laravel 论坛笔记》| Laravel China 社区...相关推荐
- 使用captcha库实现人机验证的图片验证
安装captcha库 使用go get命令获取captcha库 go get github.com/dchest/captcha 构建响应函数 // 发送图片验证码图片(gee7为自搭建web框架,可 ...
- 【Vue3】滑动验证组件 | 滑动验证
前言 滑块验证不只判断是否滑动到尾部,真正的目的是检测用户行为,检测行为是人为.脚本.还是其它. 防止使用脚本大量注册.请求等 .比如发送请求时,判断用户在某个页面停留了多长时间.登录.注册时是否点击 ...
- sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)...
项目初始化时执行以下代码 1 //重写模型,方便进行自定义验证 2 Ext.define("Ext.zh.data.Model", { 3 override: "Ext. ...
- 9、 Struts2验证(声明式验证、自定义验证器)
1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...
- R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数、交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能
R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数.交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能 ...
- R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系)、交叉验证获取最优子树之后构建最优xgboost模型
R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系).交叉验证获取最优子树之后构建最优xgboost模型 目录
- 计算机系统验证课件,回顾性验证及再验证简介(ppt 42页)
回顾性验证及再验证简介目录: 一. 验证-生命周期 二. 验证的方法及适用条件 三. 验证状态的维持-生命周期法 四. 变更控制 五. 变更控制 六. 回顾性验证 七. 再验证 八. 工艺用水 九. ...
- MVC验证05-自定义验证规则、验证2个属性值不等
本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证 MVC验证02-自定义验证规则.邮件验证 MVC验证03 ...
- EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证...
{ field : 'startPort', title : "起始端口", editor: "text", width : 50, editor: { ...
最新文章
- servlet-------------jsp 地址栏变化
- Vscode配置C语言问题
- SpringMVC简单项目配置
- 阶乘的精确值大数阶乘
- MONGODB 权限认证
- SAP ABAP SICF事务码和SAP Hybris的链式过滤器filter chain
- 以太网 数据包速率计算方法
- 管理工作中的50点感悟
- zookeeper和Kafka的关系
- SpringMVC常用的注解
- 从曾经的无比辉煌,到如今彻底凉凉,万能充到底经历了什么?
- SOA的十大技术理论体系
- mac上c++11的编译问题
- python怎么恢复默认窗口,如何恢复python编程环境spyder的窗口
- 冗余网络构建方案对比:VRRP协议、多网卡绑定及WN202冗余链路网卡
- apdu 移动sim_SIM之APDU指令格式 | 学步园
- html中复选框只能选一个,HTML选择三个不同的复选框并显示它们
- youtube-dl 环境搭建 使用
- micropython大小_Micropython进阶 | 如何用单片机制作鞋码匹配仪
- 决策树(二)——决策树的生成
热门文章
- 海康威视监控下载下来的mp4格式的视频,小类别MPEG-PS格式
- Nacos注册中心和服务消费方式
- [RK3288][Android6.0] 调试笔记 --- 设置中文为默认输入法
- Android涂鸦简单制作
- 加拿大首个以女性名字命名的工程学院:商界领袖Gina Cody向蒙特利尔康考迪亚大学捐赠1500万加元,创造历史
- EfficientNetV2网络详解
- windows许可证即将过期 win10的解决办法
- 微信公众号平台登陆-你已授权登陆过XXXX
- python爬虫爬取知乎图片,轻松解决头像荒
- WiFi大师终极版4.1.8独立源码