dominiquevienne / honeypot
这个PHP库用于在HTML表单中管理蜜罐。它将创建输入表单并执行必要的检查。
Requires
- php: ^5.3.3 || ^7.0
- monolog/monolog: >=1.23.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-30 01:22:29 UTC
README
这个PHP库用于在HTML表单中管理蜜罐。它将创建输入表单并执行必要的检查。
安装
推荐
前往您的项目根目录,并使用composer运行以下命令
composer require dominiquevienne/honeypot
然后使用以下代码创建您的应用程序引导文件
<?php require __DIR__ . '/vendor/autoload.php'; $oForm = new Dominiquevienne\Honeypot\Form(); echo $oForm->inputs();
手动安装
- 在 Github 上下载最新稳定版
- 解压下载的文件
- 将内容放入您的项目中
- 使用类似代码加载对象
<?php require __DIR__ . '/honeypot/src/Honeypot.php'; require __DIR__ . '/honeypot/src/Form.php'; $oForm = new Dominiquevienne\Honeypot\Form(); echo $oForm->inputs();
Laravel
在Laravel中使用蜜罐就像这样简单
composer require dominiquevienne/honeypot
并在您的类中添加以下行
<?php use \Dominiquevienne\Honeypot\Form; class yourController { public function show() { /** some code of yours */ $oForm = new Form(); return $oForm->inputs(); } }
Drupal 8
首先,前往您的Drupal 8项目根目录,并键入
composer require dominiquevienne/honeypot
在表单控制器(您构建表单的地方),添加
use Dominiquevienne\Honeypot\Form;
以便访问蜜罐表单构造函数。
使用设置键为 TRUE
的 drupalForm
配置数组实例化您的表单
在验证函数中使用标准函数执行检查。
工作原理
安装包后,蜜罐包括启用两个步骤
表单渲染
在这里,您将触发 Form::timeCheck(),它将存储表单渲染的日期和时间,并触发 Form::honeypotInput(),用于返回蜜罐表单元素。
这两个选项中的任何一个都是必须的。
<?php $oForm = new Dominiquevienne\Honeypot\Form(); $oForm->timeCheck(); $honeypotInputs = $oForm->inputs(); ?> <html> <?php // All your HTML code before your form ?> <form action="yourLandingPage.php" method="post"> <?php // The standard fields of your form echo $honeypotInputs; ?> <input type="submit"/> </html>
请注意,您需要隐藏蜜罐字段。为此,您有三个解决方案
- 使用CSS(默认类为hide)
- 使用JS(纯JavaScript、jQuery或其他)从DOM中删除元素。这已经通过使用默认函数
$oForm->inputs()
或使用$oForm->getHoneypotScript()
(这将返回一个纯JavaScript脚本,用于从DOM中删除蜜罐字段)来完成。
表单动作页面
在您在表单的着陆页脚本(表单元素的 action
属性)中执行真实工作之前,您将需要使用此代码
<?php $oHoneypot = new Dominiquevienne\Honeypot\Honeypot(); $checks = $oHoneypot->checks(); if(!empty($checks)) { die('Your are a spammer'); } // your code
可用的配置
创建对象时,您可以通过数组传递配置值。
<?php $config = [ 'honeypotInputClass' => 'myCssClass', 'honeypotInputNames' => [ 'name1', 'name2', ], 'formMethod' => 'GET', ]; $oForm = new Dominiquevienne\Honeypot\Form($config);
表单
honeypotInputMask
这是用于渲染输入字段的掩码。您可以使用 Form::getHoneypotInputMask() 获取当前值。
honeypotInputClass
这是用于蜜罐输入字段的CSS类。
honeypotInputType
这是输入字段的HTML类型。
honeypotInputName
强制指定特定名称的方式
honeypotInputNames
包含蜜罐将随机选择名称后跟哈希值的列表的数组。
formMethod
用于发送表单的HTTP方法
蜜罐
minFormCompletionTime
在将表单订阅者视为机器人之前,表单完成的时间(秒)
maxFailureAttempts
在被视为机器人之前,每个会话中接受的失败次数。当达到数字时,如果失败检查为ON,则整个会话期间的所有尝试都将被视为失败。
maxAttempts
在被视为机器人之前,每个会话中接受的尝试次数。当达到数字时,如果数量检查为ON,则整个会话期间的所有尝试都将被视为失败。
检查
提交表单时需要进行的检查数组。默认情况下,检查项为 ['timeCheck','honeypotCheck','tokenCheck','failureCheck','quantityCheck']
drupalForm
如果设置为 TRUE
,则 Form::inputs()
将返回 Drupal FAPI 数组而不是原始 HTML