miladrahimi / laracaptcha
免费 Laravel 验证码,适用于简洁而强大的项目!
Requires
- illuminate/support: ~5.0
- laravel/framework: ~5.0
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 许可证 下发布。