nomadcode / simple-mailform
简单的单页邮件表单工具
Requires
- monolog/monolog: 1.0.*
Requires (Dev)
- phpunit/phpunit: 6.5.*
This package is not auto-updated.
Last update: 2024-09-29 05:14:37 UTC
README
这是一个最小化实现的邮件表单工具,旨在用于为简单网站提供联系表单。
安装
composer require nomadcode/simple-mailform
使用方法
要使用邮件表单,请将一个 Nomadcode\Component\Mailform\Mailform
对象添加到您的页面中,然后调用对象的 process()
方法。
该对象使用三个参数初始化。第一个是设置对象,包含脚本的配置信息。第二个是显示在表单中的问候信息。第三个是表单信息区域中显示的文本行数。所有三个参数都是可选的,尽管强烈建议您传递一个设置对象以配置表单。
设置对象将包含以下条目
salt
设置应该是一个(非常)复杂的字符串。如果您不确定要放什么,可以使用 WordPress 的便捷的 salt 生成器 的值。
消息将发送到 recipient
,并且消息的主题行将以 prefix
为前缀。日志活动将记录在 log
的日志文件中(请确保日志文件存在,并且可以被您的 Web 服务器写入)。如果您想跟踪通过邮件表单发送垃圾邮件的尝试,还可以指定 checksum_failure_log
的路径。
如果 placeholders
是 true
,则表单中的消息字段将使用 HTML5 占位符。此选项默认关闭,因为研究表明用户可能会发现占位符令人困惑。
capture_dump_file
设置用于调试目的。如果将其设置为文件路径,则在发送消息之前将消息的内容写入文本文件。这提供了即使消息从未发送也能记录消息的记录。默认情况下,此设置未启用。
示例
// settings.php
$settings = [
'mailform' => [
'salt' => 'someverycomplicatedstring',
'recipient' => 'user@example.com',
'prefix' => 'My Website',
'log' => $_SERVER['DOCUMENT_ROOT'] . "/../logs/mailform.log",
'checksum_failure_log' => $_SERVER['DOCUMENT_ROOT'] . '/../logs/rejection.log',
'hash_algorithm' => 'sha256',
'placeholders' => true,
'capture_dump_file' => $_SERVER['DOCUMENT_ROOT'] . "/../logs/mailform-dumps.txt"
]
];
// mywebpage.html include('settings.php'); require __DIR__ . '/../phplib/autoload.php'; $greeting = <<<EndOfText Please fill in the form below to send me email. EndOfText; $form = new Nomadcode\Component\Mailform\Mailform($settings["mailform"], $greeting, 5); $form->process();
备注
组件实现了一个用于发送邮件的多步骤过程。每个步骤都使用相同的网页,但根据交互状态的不同,组件会生成不同的内容。
在第一步中,组件创建了一个简单的 HTML5 表单,允许访客输入他们的姓名、电子邮件地址、主题和消息。在第二步中,将消息显示给他们以供确认。在第三步中,发送消息,并显示确认消息以指示成功或失败。
组件实现了一种基本的反垃圾邮件技术。用户提交的消息将使用设置文件中定义的密钥盐进行哈希。在第三步中,将哈希与消息一起传递。如果传递的哈希与消息内容不匹配,则拒绝提交。
这只能提供基本的防御。如果对手知道这种技术,他们可以修改他们的垃圾邮件机器人来处理多步骤提交,通过模仿真实用户来绕过安全措施。然而,并非所有垃圾邮件机器人都是设计来应对单步提交的,点击邮件表单上的“提交”按钮会导致消息立即发送。很可能大多数垃圾邮件机器人无法识别,为了使消息提交,还需要进行额外的操作——在第二页上点击“提交”按钮。
这种方法可能比CAPTCHA稍微不那么侵入性。在用户发送消息之前让他们有机会查看他们的消息也不是坏事,因为这可能会减少不完整或不经考虑的消息提交数量。
测试
./vendor/bin/phpunit
已知问题
无
变更日志
0.2.0 首次公开发布
0.2.1 修复“发件人”行的小错误
0.2.2 支持调试
0.3.0 新增功能和改进