miladrahimi/laracaptcha

此包已被废弃,不再维护。没有推荐替代包。

免费 Laravel 验证码,适用于简洁而强大的项目!

1.1 2016-02-05 15:15 UTC

This package is auto-updated.

Last update: 2022-10-17 06:26:43 UTC


README

Laravel 简单验证码

文档

LaraCaptcha 是一个易于使用的 Laravel 框架验证码生成包。它基于 Laravel API 构建,您可以使用它与 Laravel 功能一起使用。LaraCaptcha 使用基于图像的验证码来保护您免受垃圾邮件的侵害。

安装

运行终端(基于 Linux 的环境)或命令提示符(Windows 操作系统),指向您项目中可以看到 `composer.json` 文件的位置。然后运行以下命令

composer require miladrahimi/laracaptcha

将包添加到您的项目后,您需要将 LaraCaptcha 提供者添加到您的项目提供者列表中。为此,打开 config/app.php 文件,并将以下代码追加到提供者列表中。

Laravel <= 5.0

'MiladRahimi\LaraCaptcha\Provider',

Laravel => 5.1

MiladRahimi\LaraCaptcha\Provider::class,

验证码图像

您需要在您的 HTML 表单中显示一个验证码图像,因此 LaraCaptcha 提供了一个类似于以下内容的图像 URL,您可以使用它。

http://your-project.com/laracaptcha.png

您可以使用 Laravel url() 函数在 Blade 模板系统中解析此 URL。

{{ url('/laracaptcha.php') }}

因此,您的验证码图像应该是这样的

<img src="{{ url('/laracaptcha.php') }}">

随机 URL 和缓存问题

如果您使用上述提到的方法,您很快就会遇到缓存问题。因为每当用户重新加载页面或按刷新按钮时,每个验证码都必须是不同的东西。但有时用户浏览器(如 Firefox 和 Chrome)会缓存图像,因此用户看到的图像与服务器创建的新图像相同。

您可能会问现在该怎么办?这是一个好问题!您必须向图像 URL 添加一个假参数,并传递一个像以下示例那样的随机值

http://your-project.com/laracaptcha.png?r=65442

在 Blade 模板系统中这样做

url('/laracaptcha.png?r=' . rand(0, 100000))

因此,您的验证码图像应该是这样的

<img src="{{ url('/laracaptcha.png?r=' . rand(0, 100000)) }}">

刷新按钮

如果您不需要为您的验证码添加刷新按钮,请跳过此部分。

您还在这里,所以您需要它!

我假设您已在页面 Blade 中创建了一个按钮,如下所示

<button type="button" id="refresh">Refresh</button>

因此,您需要将以下 jQuery 代码添加到您的页面中

<script>
    $("#refresh").click(function () {
        $("#captcha").attr("src", '/laracaptcha.png?r=' + Math.random());
    });
</script>

验证

现在,是时候验证用户输入了。我希望您使用 Laravel 验证规则,因此您可以使用 laraCaptcha 规则,如下所示

$validator = Validator::make(Request::all(), [
    'captcha' => 'required|laraCaptcha',
]);
if ($validator->fails()) {
    // On error
} else {
    // No error
}
  • captcha 是 HTML 表单字段的名称。

当然,还有一步要做。您应该添加一个用户友好的错误消息,如果用户输入了错误的验证码。为此,打开 resources/lang/en/validation.php 并将以下项添加到现有数组中。

"laracaptcha" => "You entered the security code incorrectly.",

当然,您可以在验证消息中使用 :attribute

这种方法使您能够使用 Laravel 国际化工具。

主页

贡献者

许可

LaraCaptcha 在 MIT 许可证 下发布。