2

我的 Magento CE 1.7 站点联系表之一被人类垃圾邮件农场发送垃圾邮件,从而绕过了在此类表单上实施的 Google reCaptcha。每天收到的垃圾邮件率高达 300 封已成功验证验证码的电子邮件。

由于正在使用联系表格,电子邮件中没有发送发件人 IP 地址,因此我需要有关如何获取用户 IP 并将其包含在我收到的垃圾邮件联系电子邮件中的帮助和指导。

这个想法是禁止用于垃圾邮件的 IP。

获取用户IP的php调用

echo Mage::helper('core/http')->getRemoteAddr(true);

我如何在联系表格中使用它,并通过联系表格联系人提交 IP。

我感谢所有的帮助。

最诚挚的问候

工厂

4

2 回答 2

3

安德鲁,

非常感谢。

对您的代码进行了此调整后,正确的 IP 出现了:

public function postAction()
{
$post = $this->getRequest()->getPost();
if ( $post ) {
    $translate = Mage::getSingleton('core/translate');
    /* @var $translate Mage_Core_Model_Translate */
    $translate->setTranslateInline(false);
    try {
        $postObject = new Varien_Object();
        $postObject->setData($post);
        // Add the IP..
        $postObject->setData(
            'ip', 
            $_SERVER['REMOTE_ADDR'] 
        );

再次非常感谢

于 2013-07-01T16:16:23.540 回答
2

您可以简单地覆盖联系人控制器:

Mage_Contacts_IndexController

只需修改发布操作:

public function postAction()
{
    $post = $this->getRequest()->getPost();
    if ( $post ) {
        $translate = Mage::getSingleton('core/translate');
        /* @var $translate Mage_Core_Model_Translate */
        $translate->setTranslateInline(false);
        try {
            $postObject = new Varien_Object();
            $postObject->setData($post);
            // Add the IP..
            $postObject->setData(
                'ip', 
                $_SERVER['REMOTE_ADDR']
                //Mage::helper('core/http')->getRemoteAddr(true)
            );

            // .. rest un changed..

现在您需要更新电子邮件模板:

转到 Magento Admin 部分中的 System → Transactional E-mails。

2)“添加新模板”

3)从“模板”下拉框中选择“联系表格”,点击“加载模板”

现在修改模板以添加新字段:

Name: {{var data.name}}
E-mail: {{var data.email}}
Telephone: {{var data.telephone}}
Comment: {{var data.comment}}
IP Address: {{var data.ip}}

转到系统 → 配置 → 联系人

在“电子邮件模板”下拉框中选择您的新模板。

于 2013-07-01T13:56:30.500 回答