我的Magento商店的联系表格偶尔会收到垃圾邮件。我不愿意添加Captcha,所以我想尝试在表单中添加一个隐藏字段。如果该字段被填写,则表单将不会被提交(大多数机器人会自动完成所有字段)。
我知道如何添加字段,但有人知道如果字段有值,如何/在何处添加代码以拒绝表单?
谢谢!
答案 0 :(得分:2)
首先,您需要知道联系人表单请求的控制器操作。如果您还不知道,请查看action
的{{1}}参数,或使用Fiddler,或使用某些浏览器专用工具(如Firebug等)查找。
接下来,override您自己找到的控制器操作。
最后,在你的重写动作中,输入
<form>
赶上。
答案 1 :(得分:1)
我不确定你到底想要什么,但也许这会有所帮助。
标准控制器为Mage_Contacts_IndexController
,位于此处: app / code / core / Mage / Contacts / controllers / IndexController.php
当然,您要么将其复制到local
目录,要么使用您自己的自定义模块扩展该类。您可以尝试使用此文件的副本。我希望这会有所帮助。
答案 2 :(得分:1)
我对搜索人员的微小贡献 - 这种防御被称为蜜罐。你去吧。
在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
中添加的隐藏字段。
答案 3 :(得分:0)
我认为您可以在主块中创建表单时放置隐藏字段,如下所示:
$fieldset->addField('entity_type_id', 'hidden', array(
'name' => 'entity_type_id',
'value' => 11
));
然后你可以在saveAction()中检查它以检查是否设置了这些值