为 Laravel 提供简单的垃圾邮件保护。
v1.2.1
2021-02-03 18:51 UTC
Requires
- php: >=7.2
- illuminate/config: ^5|^6|^7|^8
- illuminate/support: ^5|^6|^7|^8
- illuminate/translation: ^5|^6|^7|^8
Requires (Dev)
- mockery/mockery: ^0.9.9|^1.3.1
- phpunit/phpunit: ^6.3|^8.5.8|^9.3.3
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 赞助。