Magento CE 1.7获取联系人表单中包含的用户ip

Magento CE 1.7获取联系人表单中包含的用户ip,ip,magento-1.7,spam-prevention,Ip,Magento 1.7,Spam Prevention,我的Magento CE 1.7网站联系人表单中有一个被垃圾邮件农场发送垃圾邮件,因此绕过了在此类表单上实现的Google reCaptcha。每天收到300封成功验证验证码的垃圾邮件的比率高得离谱 由于使用了联系人表单,电子邮件中没有发送发件人ip地址,因此我需要有关如何获取用户ip的帮助和指导,并将其包含在我收到的垃圾邮件联系人电子邮件中。 其想法是禁止用于垃圾邮件的IP 获取用户IP的php调用 echo Mage::helper('core/http')->getRemoteAdd

我的Magento CE 1.7网站联系人表单中有一个被垃圾邮件农场发送垃圾邮件,因此绕过了在此类表单上实现的Google reCaptcha。每天收到300封成功验证验证码的垃圾邮件的比率高得离谱

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

其想法是禁止用于垃圾邮件的IP

获取用户IP的php调用

echo Mage::helper('core/http')->getRemoteAddr(true);
我如何在联系人表单中使用此信息,并将IP与联系人表单一起提交

我感谢所有的帮助

致以最良好的问候


Fab

您可以简单地覆盖contacts控制器:

Mage_Contacts_IndexController
只需修改post操作:

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管理部分中的事务性电子邮件

2) “添加新模板”

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

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

Name: {{var data.name}}
E-mail: {{var data.email}}
Telephone: {{var data.telephone}}
Comment: {{var data.comment}}
IP Address: {{var data.ip}}
转到系统→ 配置→ 接触

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

安德鲁

非常感谢

通过此代码调整显示正确的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'] 
        );

再次非常感谢大家的帮助和指导。交付的IP不正确,例如1887152281。我认为它应该使用“$”服务器['REMOTE\u ADDR']”而不是“getRemoteAddr”。请帮助我,我只是使用了你的代码样本,老实说,我没有检查:)所以这一切都归结为中国的垃圾邮件农场。这有助于我们通过拒绝ip范围112.123.168阻止攻击*