本系列文章为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 社区...相关推荐

  1. 使用captcha库实现人机验证的图片验证

    安装captcha库 使用go get命令获取captcha库 go get github.com/dchest/captcha 构建响应函数 // 发送图片验证码图片(gee7为自搭建web框架,可 ...

  2. 【Vue3】滑动验证组件 | 滑动验证

    前言 滑块验证不只判断是否滑动到尾部,真正的目的是检测用户行为,检测行为是人为.脚本.还是其它. 防止使用脚本大量注册.请求等 .比如发送请求时,判断用户在某个页面停留了多长时间.登录.注册时是否点击 ...

  3. sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)...

    项目初始化时执行以下代码 1 //重写模型,方便进行自定义验证 2 Ext.define("Ext.zh.data.Model", { 3 override: "Ext. ...

  4. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

  5. R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数、交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能

    R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数.交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能 ...

  6. R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系)、交叉验证获取最优子树之后构建最优xgboost模型

    R语言构建xgboost模型:xgb.cv函数交叉验证确定模型的最优子树个数(可视化交叉验证对数损失函数与xgboost模型子树个数的关系).交叉验证获取最优子树之后构建最优xgboost模型 目录

  7. 计算机系统验证课件,回顾性验证及再验证简介(ppt 42页)

    回顾性验证及再验证简介目录: 一. 验证-生命周期 二. 验证的方法及适用条件 三. 验证状态的维持-生命周期法 四. 变更控制 五. 变更控制 六. 回顾性验证 七. 再验证 八. 工艺用水 九.  ...

  8. MVC验证05-自定义验证规则、验证2个属性值不等

    本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   MVC验证02-自定义验证规则.邮件验证   MVC验证03 ...

  9. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证...

     { field : 'startPort', title : "起始端口", editor: "text", width : 50, editor: { ...

最新文章

  1. Spring Boot 入门——Spring Boot 简介||微服务简介
  2. 接口responsecode返回500_springboot+redis+Interceptor+annotation实现接口自动幂(989)
  3. Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用
  4. CentOS内核升级
  5. 【Oracle】to_char技巧
  6. 【感知机/支持向量机】点到平面距离公式的由来
  7. java用io流存信息_Java io流的学习
  8. 【30天精通JavaScript ~ 网络篇】JavaScript 网络请求与远程资源
  9. java反编译数组_JavaGuide/JAD反编译tricks.md at master · Github-Programer/JavaGuide · GitHub...
  10. 20世纪物理学进展与百年重大新技术
  11. [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  12. 程序员的头符合好头的标准吗?
  13. Windows搭建青龙面板教程
  14. (万字超详细的复习资料丨没有之一)通信原理考试复习资料,按需收藏加关注。
  15. Auto.js 实现钉钉实时抢红包
  16. Linux学习之错误与解决记录(持续更新)
  17. BC渗透的常见切入点(总结)
  18. 什么是勒索病毒?有哪些危害?如何预防?
  19. Java的特征/特点(全)
  20. 热水结冰比冷水快?半世纪争议终于解开

热门文章

  1. python自动办公 pdf_别再问如何用 Python 提取 PDF 内容了!
  2. 电脑链接wifi显示无法连接服务器,电脑连接wifi出现感叹号_电脑连接wifi成功但上不了网怎么办?-192路由网...
  3. Arcgis使用教程(六)ARCGIS空间数据查询
  4. php 设置斜体字体,斜体 - FontForge 教程 | BootWiki.com
  5. 计算机毕业设计android的消防安全知识宣传app(源码+系统+mysql数据库+Lw文档)
  6. android 读写文件 简书,Android 读取asset文件
  7. Hololens官方教程精简版 - 08. Sharing holograms(共享全息影像)
  8. sap 流程图 退货销售订单_销售订单_退货及退回客户(采用高级退货)
  9. A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读
  10. python打招呼的代码_GitHub - worry45678/LearnPython: 以撸代码的形式学习Python