aplitax / nette-antispam
Nette AntiSpam 表单控件。
1.0.2
2023-11-06 14:34 UTC
Requires
- php: >=8.0
- nette/di: ^3.1
- nette/forms: ^3.1
- nette/http: ^3.2
- nette/utils: ^4.0
This package is auto-updated.
Last update: 2024-09-06 17:31:36 UTC
README
Nette-AntiSpam 作为表单组件,通过四种方法保护表单免受随机垃圾邮件的侵害。
隐藏字段
在表单中生成额外的隐藏字段,这些字段通过 JavaScript 对用户隐藏。如果某个字段被填写,则发送者将被识别为垃圾邮件机器人。
可以通过在隐藏后替换为自定义 CSS 类来替代隐藏的 JavaScript。
表单时间锁
由于垃圾邮件机器人通常会立即发送表单,因此可以设置表单被锁定的时间(以秒为单位)。
验证问题
随机生成的简单计算题,其中数字被随机转换为字符串。该问题同样被用户隐藏并通过 JavaScript 填写。如果用户禁用了 JavaScript,则将提示用户填写字段。
在这种情况下,可以为标签和输入设置自定义的绘制。
帖子间的延迟
该延迟指定用户多久可以再次发送帖子。
Composer
composer require urbitech/nette-antispam
安装
只需将以下内容添加到您的 config.neon 文件的 extensions 部分:
antispam: Zet\AntiSpam\AntiSpamExtension
配置
可以通过以下设置配置组件:
- lockTime 表单锁定时间,在此期间不允许发送。设置期望的延迟时间(以秒为单位)。
- resendTime 用户可以再次发送表单的时间。设置期望的延迟时间(以秒为单位)。通过设置为 0 可以禁用此设置。
- numbers 用于随机转换的数字字段。数字从 0 开始排序。
- question 验证问题的内容。
- translate 启用验证问题的本地化。True/false。
使用
可以使用以下方式使用已注册的表单扩展:
protected function createComponentForm() { $form = new \Nette\Application\UI\Form(); // Vlastní prvky formuláře ... $form->addAntiSpam("spamControl", 5, 60); }
addAntiSpam 函数接受第一个参数为元素名称,这是必填参数。
可以添加第二个参数作为表单锁定,以及第三个参数作为用户可以再次发送表单的时间。
表单验证
可以根据元素返回的值验证表单 - 如果发送者通过了 antispam,则返回 true,否则返回 false。
$values = $form->getValues(); if($values->spamControl) { // Všechny podmínky pro odeslání formuláře byli splněny. }
配置
设置器
$antiSpam->setLockTime(); // Nastaví, kolik vteřin musí uplynout před odesláním formuláře. $antiSpam->setResendTime(); // Nastaví, kolik vteřin musí uplynout, než je formulář znova odeslán. $antiSpam->setNumbers(); // Pole čísel vyjádřených slovy pro náhodný převod na řetězec. $antispam->setQuestion(); // Znění kontrolní otázky.
获取器
$antispam->getError(); // Kod chyby. $antispam->getHiddenFields(); // Vrátí generátor skrytých polí. Užitečné pro přepnutí schování z JS na CSS. $antispam->getQuestionGenerator(); // Vrátí generátor kontrolní otázky s prototypy Labelu a inputu.
如果所有发送表单的条件都满足,则 getError() 函数将返回 0。否则,将返回一个错误编号,可以与类 Zet\AntiSpam\ErrorType 中的常量进行测试。
ErrorType 常量
class ErrorType { use StaticClass; const NO_ERROR = 0; const LOCK_TIME = 1; const RESEND_TIME = 2; const HIDDEN_FIELDS = 3; const QUESTION = 4; }