mccarthy/php-form-protect

phpFormProtect 允许您在不使用验证码的情况下保护表单免受垃圾邮件发送者的侵害。

dev-master 2019-04-11 02:15 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:26:56 UTC


README

phpFormProtect 以不干扰用户的方式保护表单免受垃圾邮件发送者的侵害。它是 CAPTCHA 的替代品,也可以用于防止评论垃圾邮件。它通过运行多个测试来处理每个提交,然后对提交进行评分。任何一个测试本身都有缺陷,但结合使用它们可以为特定表单提交的垃圾邮件倾向提供高质量的指标。默认情况下,最后两个测试根据分配的分数导致失败。这很容易配置。

此项目是 CFFormProtect 的移植版本。[链接](http://cfformprotect.riaforge.org/)。我们发现当从 ColdFusion 切换到 PHP 时,没有类似的东西。非常感谢 CFFormProtect 的人们,特别是 fp.js,它是 cffp.js 的副本。

测试如下

  • 隐藏表单字段 - 如果隐藏表单字段被填写,则这是垃圾邮件的指示
  • 表单提交时间 - 如果表单填写得太快或太慢,则这是垃圾邮件的指示
  • 过多 URL - 如果评论字段中有太多 URL(数字可配置),则这是垃圾邮件的指示
  • 鼠标移动 - 如果用户不使用鼠标,则这是垃圾邮件的指示
  • 使用键盘 - 如果用户不使用键盘,则这是垃圾邮件的指示
  • 验证引用 - 如果 HTTP 引用与表单 URL 不匹配,则不应接受提交。
  • 验证电子邮件 - 如果表单中提供的电子邮件地址从语法角度来看无效,则不应接受提交。

贡献者

Dan McCarthy (mcc@rthy.net)

版本

0.2

通过 Composer 安装

在您的 composer.json 中要求该软件包

"require": {
    "mccarthy/phpFormProtect": "master"
}

更新 Composer

$ composer update

手动安装

  • 将 phpfp 文件夹复制到包含表单和处理页面的同一文件夹中,您的 Web 服务器上

使用说明

  • 在您想要保护的表单的表标签之间放置此行代码
<?php include 'phpfp/phpfp.php'; ?>
  • 在表单处理页面上,执行以下操作
$fp = new FormProtect;
$fpResult = $fp->testSubmission($_POST);

if($fpResult[pass]) {
	//echo "Passed, looks like a valid submission.  Process as normal, send email, etc.";
}
else {
	//echo "Failed.  Looks like spam.  Log, block IP, email, etc.";
}

### 示例代码

  • 文件 "contact.php" 和 "contact-process.php" 包含示例代码,展示如何使用 phpFormProtect。
  • 您可以使用示例代码文件,或将类似的逻辑添加到您的表单处理页面。

待办事项

  • 在电子邮件中包含 IP、反向 IP 查找、引用 URL 和浏览器
  • 更好地处理空表单提交
  • 消除或修复垃圾邮件单词测试
  • 添加日志记录
  • 添加配置文件
  • 将 JS 移动到 <head>
  • 集成 akismet
  • 集成项目蜜罐
  • 集成 [PHP Spam Detection](https://code.google.com/p/phpspamdetection/)
  • 集成 [Spamhaus dbl](http://www.spamhaus.org/dbl/) - ([辅助文章](http://www.lockergnome.com/net/2012/04/23/checking-a-domain-against-the-spamhaus-dbl-in-php/))
  • 集成 [Linksleeve](http://www.linksleeve.org/)
  • 添加来自 [WebmasterWorld](http://www.webmasterworld.com/php/4406126.htm) 的想法

研究 & 灵感

许可证

此源代码形式受Mozilla公共许可证第2.0版的条款约束。如果此文件未附带Mozilla公共许可证副本,您可以在http://mozilla.org/MPL/2.0/获取一个副本。