jzechy/nette-antispam

Nette AntiSpam 表单控件。

2.0.5.1 2018-10-06 19:33 UTC

This package is not auto-updated.

Last update: 2024-09-22 03:17:27 UTC


README

Latest stable license Downloads Total Open Issues

Nette-AntiSpam 作为表单组件,通过四种方法保护表单免受随机垃圾邮件的影响。

隐藏字段

在表单中生成额外的字段,这些字段被 JavaScript 隐藏。如果任何字段被填写,发送者将被识别为垃圾邮件机器人。

可以通过在隐藏后使用自定义 CSS 类来替换被 JavaScript 隐藏,以供没有 JavaScript 的用户使用。

表单锁定时间

由于垃圾邮件机器人通常会立即发送表单,可以设置在多长时间内表单被锁定。

验证问题

随机生成的简单数学问题,其中数字被随机转换为字符串。这个问题再次被隐藏并使用 JavaScript 填写。如果用户禁用了 JavaScript,则会被要求填写该字段。

在这种情况下,可以设置标签和输入的自定义绘制。

帖子间的延迟

此延迟定义了用户可以再次发送帖子需要多长时间。

Composer

composer require jzechy/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;
}