我有一个 PHP 脚本,它发送纯文本电子邮件,其中包含某些操作的链接,例如确认和协议等。
我注意到,Web 版 Outlook 会在用户单击链接之前自动检测该链接并在后台访问该链接。我注意到了这一点,因为只要我打开电子邮件,数据库中的内容就会发生变化。另外检查 Apache 访问日志,我看到BingPreview/1.0b作为用户代理。
这非常糟糕,因为用户可能不想执行这些操作。
我可以发送电子邮件标头来禁用此行为吗?建议?
正如我在评论中写道:
“您可以使用某种形式的输入按钮和复选框,所有这些都设置在条件语句中。这些实际上无法单击/选中。”
旁注更正:我犯了一个轻微的语法错误。应该读作:
“你可以使用某种形式的输入按钮和复选框,所有这些都设置在条件语句中。这些实际上无法单击/检查,并且必须由真人实际完成。”
甚至 Google 也建议使用复选框。
在“订阅”下:
“通过手动选中网络表单上或软件中的框。”
和
“在网络表单或软件中设置一个复选框,以默认订阅所有用户(要求用户明确选择退出邮件)。”
此外,您可以使用 reCAPTCHA:
这是另一篇关于 Google 和复选框的文章;即使它是“垃圾邮件相关”,也适用相同的逻辑:
摘自那篇文章:
“谷歌本周推出了一个更好的解决方案:“无验证码 reCAPTCHA”,我们将其称为“复选框和小猫”。
和
“就是这样。一个复选框。”“我不是机器人。”尽管谷歌没有详细说明该框背后的魔力,但宣布这一变化的博客文章表示,“风险分析引擎”会衡量用户的交互方式通过页面和验证码,可以判断是否需要一个简单的复选框以外的其他内容。如果您被检测为人类,则选中一个复选框并点击提交。”
所有这些都设置在条件语句中,以检查是否单击了提交按钮并设置了复选框,使用每个语句的名称属性。
IE:
<form action="handler.php" method="post">
<input type="checkbox" value="XX" name="checkbox_x">
<input type="submit" name="submit_button">
</form>
<?php
if(isset($_POST['submit_button'])){
if(isset($_POST['checkbox_x'])){
// Do your thing
// Additionally, you could place GET array(s) if they're being used
// and also check to see if any are set and not empty.
}
}
?>
Run Code Online (Sandbox Code Playgroud)
&&旁注:您还可以使用(AND) 逻辑运算符检查复选框是否等于上述内容之外的内容。
例子:&& $_POST['checkbox_x'] == 'XX'。
您还可以查看 Stack 上的问答:
其中建议了蜜站和其他一些建议。
以下内容是从您已删除的答案中提取的。
参考:
“您可以做的一件事是,设置 .htaccess 以阻止 BingPreview 用户代理访问您的注册和密码重置路径(您的路径可能与此示例不同)::
RewriteEngine On
RewriteCond %{REQUEST_URI} /signup/confirm/ [OR]
RewriteCond %{REQUEST_URI} /resetting/reset/
RewriteCond %{HTTP_USER_AGENT} BingPreview
RewriteRule . - [F,L]
Run Code Online (Sandbox Code Playgroud)
“这将阻止 BingPreview 爬虫,但我觉得这是一个不完整的解决方案。您可以根据需要阻止尽可能多的烦人的用户代理,但您真的想花所有时间寻找哪些电子邮件提供商提供类似的链接吗?他们的电子邮件中有预览吗?”