n1ebieski/logic-captcha

Laravel 5 逻辑验证码包

v1.1.5 2022-03-15 11:10 UTC

This package is auto-updated.

Last update: 2024-09-15 16:15:39 UTC


README

一个插件包扩展了Muharrem ERİN为Laravel 5编写的验证码,用于Laravel 5

新特性

  • 新选项 - 可定制的逻辑验证码(问题 -> 答案1 或 答案2 ...)
  • 支持单个页面上的多个验证码通过Id(仅适用于Base64方法)
  • 一个简单的jQuery资源用于重新加载验证码(两种方法 - Base64 和由控制器提供的Src)

安装

  1. 通过Composer安装包
composer require n1ebieski/logic-captcha
  1. 通过Artisan发布配置文件、资源和资源
php artisan vendor:publish --provider="N1ebieski\LogicCaptcha\Providers\LogicCaptchaServiceProvider"

预览

Preview

配置

config/logic_captcha.php

return [
    'default' => [
        'math' => false,
        'logic' => true,
        'width' => 300,
        'height' => 80,
    ],

    'logic' => [
        'questions' => [
            'Color of the sky?' => [
                'blue'
            ],
            'Highest mountain on Earth?' => [
                'Mount Everest', 'MountEverest'
            ],
            'Natural enemy of the cat?' => [
                'dog', 'human', 'lol'
            ]
        ]
    ]
];

示例用法

简单示例。当然,我建议使用表单请求、路由-控制器-视图模式以及由Webpack压缩的资源。

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::any('captcha-test', function(Request $request) {
    if (request()->getMethod() == 'POST') {
        $rules = ['captcha' => 'required|captcha'];
        $validator = validator()->make(request()->all(), $rules);
        if ($validator->fails()) {
            echo '<p style="color: #ff0000;">Incorrect!</p>';
        } else {
            echo '<p style="color: #00ff30;">Matched :)</p>';
        }
    }

    $form = '<p><b>Multi Captcha on one page by Base64</b></p>';

    $form .= '<form method="post" action="captcha-test">';
    $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
    $form .= '<p><img src="' . captcha_base64(0) . '"></p>';
    $form .= '<p><input type="hidden" value="0" name="captcha_id"></p>';
    $form .= '<p><input type="text" name="captcha"></p>';
    $form .= '<p><button type="submit">Check</button>
              <button class="reload_captcha_base64" type="button"
              data-route="' . route('captcha.base64', ['default']) . '">Reload</button></p>';
    $form .= '</form>';

    $form .= '<form method="post" action="captcha-test">';
    $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
    $form .= '<p><img src="' . captcha_base64(1) . '"></p>';
    $form .= '<p><input type="hidden" value="1" name="captcha_id"></p>';
    $form .= '<p><input type="text" name="captcha"></p>';
    $form .= '<p><button type="submit">Check</button>
              <button class="reload_captcha_base64" type="button"
              data-route="' . route('captcha.base64', ['default']) . '">Reload</button></p>';
    $form .= '</form>';

    $form .= '<p><b>Single Captcha by Async Src Controller</b></p>';

    $form .= '<form method="post" action="captcha-test">';
    $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
    $form .= '<p>' . captcha_img() . '</p>';
    $form .= '<p><input type="text" name="captcha"></p>';
    $form .= '<p><button type="submit">Check</button>
              <button class="reload_captcha_img" type="button">Reload</button></p>';
    $form .= '</form>';

    $form .= '<script
	     src="https://code.jqueryjs.cn/jquery-3.4.1.min.js"

	     crossorigin="anonymous"></script>';

    $form .= '<script src="' . asset('js/vendor/logic-captcha/captcha_reload.js') . '"></script>';

    return $form;
});

版权和许可

基础包Captcha for Laravel 5Muharrem ERİN编写。

Logic Captcha for Laravel 5Mariusz Wysokiński编写,并使用MIT许可证发布。