为 Laravel 提供简单的垃圾邮件保护。

v1.2.1 2021-02-03 18:51 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:36 UTC


README

为 Laravel 提供简单的垃圾邮件防护包。

安装

Composer

在终端运行以下命令将包添加到项目中。

composer require appel/honeypot

发布配置文件和翻译

将包配置文件和翻译发布到您的应用程序中。在终端运行此命令。

php artisan vendor:publish --provider="Appel\Honeypot\Providers\HoneypotServiceProvider"

或者,您可能想单独发布文件。

php artisan vendor:publish --provider="Appel\Honeypot\Providers\HoneypotServiceProvider" --tag="config"
php artisan vendor:publish --provider="Appel\Honeypot\Providers\HoneypotServiceProvider" --tag="lang"

使用方法

门面

通过插入 Honeypot::make(...) 将 honeypot 隐藏输入添加到您的表单中,例如这样

<form action="..." method="...">
    {!! Honeypot::make('honeypot_name', 'honeypot_time') !!}
</form>

辅助函数

<form action="..." method="...">
    {!! honeypot('honeypot_name', 'honeypot_time') !!}
</form>

Blade 指令

<form action="..." method="...">
    @honeypot('honeypot_name', 'honeypot_time')
</form>

注意:如果您使用的是 Blade 指令,可能需要运行 php artisan view:clear 才能使其生效。

make() 方法将输出以下 HTML 输入。(honeypot_time 字段将生成加密的时间戳。)

<div id="honeypot_name_wrap" style="display: none;">
    <input type="text" name="honeypot_name" id="honeypot_name" value="" autocomplete="off">
    <input type="text" name="honeypot_time" id="honeypot_time" value="encrypted timestamp" autocomplete="off">
</div>

添加 honeypot 字段后,在控制器中添加 honeypot 和 honeytime 字段的验证规则。

$this->validate($request, [
    ...
    'honeypot_name' => 'honeypot',
    'honeypot_time' => 'required|honeytime:5'
]);

请注意,在 honeytime 规则中,您需要指定用户填写表单所需的时间(以秒为单位)。如果时间少于这个值,表单将被拒绝。

设置

通过使用 display: hidden 将 honeypots 隐藏在页面中。您还可以通过发布配置文件并更改此设置来将它们移出页面

return [
    ...
    /**
     * Hide the fields by setting the display property of the outer div to none,
     * or by moving it off-screen. Accepted values: 'hide', 'off-screen'
     */
    'hide_mode'     => 'off-screen'
];

致谢

该项目基于 Ian Landsman 的早期项目 Ian Landsman。以下人员为此项目做出了贡献:Maksim Surguy,Arjhay Delos Santos

此项目由 Bomshteyn Consulting 赞助。