【发布时间】:2012-04-06 18:56:16
【问题描述】:
我偶尔会收到来自我的 Magento 商店的联系表单的垃圾邮件。我不愿意添加验证码,所以想尝试在表单中添加一个隐藏字段。如果该字段被填写,则不会提交表单(大多数机器人会自动填写所有字段)。
我知道如何添加字段,但是如果字段有值,有人知道如何/在哪里添加代码以拒绝表单吗?
谢谢!
【问题讨论】:
标签: magento
我偶尔会收到来自我的 Magento 商店的联系表单的垃圾邮件。我不愿意添加验证码,所以想尝试在表单中添加一个隐藏字段。如果该字段被填写,则不会提交表单(大多数机器人会自动填写所有字段)。
我知道如何添加字段,但是如果字段有值,有人知道如何/在哪里添加代码以拒绝表单吗?
谢谢!
【问题讨论】:
标签: magento
我不确定你到底想要什么,但也许这会有所帮助。
标准控制器是Mage_Contacts_IndexController,它位于:app/code/core/Mage/Contacts/controllers/IndexController.php
当然,您可能希望将其复制到local 目录,或者使用您自己的自定义模块扩展该类。您可以尝试使用此文件的副本。我希望这会有所帮助。
【讨论】:
我对人们搜索的小贡献 - 这种防御称为蜜罐。就这样吧。
在 Magento 1.3.2 中,我在 code/local/Mage/Contacts/controllers/IndexController.php 控制器副本的第 75 行添加了这个:
// check the spam honeypot
if (!empty($post['yummy'])) {
$error = true;
}
其中 'yummy' 是我在 template/contacts/form.phtml 中添加的隐藏字段。
【讨论】:
我认为您可以像这样在主块中创建表单时放置隐藏字段:
$fieldset->addField('entity_type_id', 'hidden', array(
'name' => 'entity_type_id',
'value' => 11
));
然后你可以在 saveAction() 中检查这些值是否被设置
【讨论】: