Php 如何在Magento中防止垃圾邮件评论

Php 如何在Magento中防止垃圾邮件评论,php,forms,magento,recaptcha,spam,Php,Forms,Magento,Recaptcha,Spam,我们在Magento商店看到了大量垃圾邮件产品评论。我最近安装了Fontis reCaptcha扩展,将reCaptcha表单添加到评论表单中。在我所有的测试中,这非常有效。“真实”用户在未填写reCaptcha部分的情况下无法提交表单。然而,这并没有解决问题。我们仍然收到垃圾邮件评论。有趣的是,这些垃圾评论也没有星级。不知何故,这些垃圾邮件机器人能够在没有所有必需信息的情况下提交审查,并完全绕过reCaptcha代码。我该怎么解决这个问题呢 我还尝试创建一个简单的脚本,将表单字段提交到表单的a

我们在Magento商店看到了大量垃圾邮件产品评论。我最近安装了Fontis reCaptcha扩展,将reCaptcha表单添加到评论表单中。在我所有的测试中,这非常有效。“真实”用户在未填写reCaptcha部分的情况下无法提交表单。然而,这并没有解决问题。我们仍然收到垃圾邮件评论。有趣的是,这些垃圾评论也没有星级。不知何故,这些垃圾邮件机器人能够在没有所有必需信息的情况下提交审查,并完全绕过reCaptcha代码。我该怎么解决这个问题呢

我还尝试创建一个简单的脚本,将表单字段提交到表单的actionurl进行审阅,以绕过逻辑(见下文)。我要么无法让它工作,要么就是无法完成,但我总是被重定向到“请启用cookies”页面

审查表格提交测试
使用Varien_Http_客户端(Zend_Http_客户端)更容易提交测试审核

没有reCaptcha,它增加了审查

对于现在下载的reCaptcha fontis模块(版本2.3.1),它返回错误的reCaptcha


如果您使用同一版本的这个模块和相同的MaMeto版本(1.62.0),我会考虑搜索服务器日志来查找“邪恶”POST请求并检查入口点。

< P>尝试使用我们的免费模块。它的功能是,在没有capcha的情况下拒绝垃圾邮件机器人。

我最终在Fontis reCaptcha扩展中实现了Akismet反垃圾邮件代码,这似乎消除了所有垃圾邮件审查。不知何故,机器人能够绕过reCaptcha检查。我还没有弄清楚是怎么回事,但我想这就是黑客和我这样的家伙之间的区别,他们只是想保持网站的正常运行…

我开发了一个扩展,可以使用Magento中的默认表单提交评论。然后它将内容发送到Mollom,这与Akismet类似。然后对内容进行分析,如果内容被解释为垃圾邮件,我会让用户在下一步输入验证码,让“真实”用户有机会验证其真实性。如果服务没有正确检测到垃圾邮件,这种方法可以允许垃圾邮件,但实际上用户更容易使用。我还没有将代码打包在一起,但是如果我发现对此类产品有足够的需求,我可以在Magento Connect上提供它。

问题不在这里,似乎在/review/product/post/id/2587/对应的文件中。感谢您提供有关通过Varien类测试评论提交的信息。这似乎是可行的,但是响应到页面的是乱七八糟的(看起来像是将二进制文件打印为文本)。我能做些什么使它可读吗?
echo$response
调用
$response->\u toString()
,它同时打印响应的标题和正文。使用
echo$response->getRawBody()
,您可以获得不带标题的输出,并且它应该正确地显示在浏览器中(在chrome中适用于我)。无论如何,这不是我的工作重点,Response只显示错误消息,确认验证码模块正在工作
<?php
$curl_connection = curl_init('http://my.domain.com/review/product/post/id/2587/');

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

$post_data = array();
$post_data['ratings[5]'] = '21';
$post_data['nickname'] = 'mynick';
$post_data['title'] = 'my title';
$post_data['detail'] = 'My Review Content';

$post_items = array();

foreach ( $post_data as $key => $value)
{
    $post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

$result = curl_exec($curl_connection);

echo "Curl Info:<br><pre>";
print_r(curl_getinfo($curl_connection), true);


curl_close($curl_connection);

echo "<br>Result:<br>" . htmlentities($result) . "</pre><br>";
?>
include 'app/Mage.php';
Mage::app(); //for autoloading:)

$client = new Varien_Http_Client('http://your-url.com/review/product/post/id/2/');
$client->setMethod(Varien_Http_Client::POST);
$client->setParameterPost('nickname', 'test');
$client->setParameterPost('detail', 'detail');
$client->setParameterPost('title', 'test');
$client->setCookie('test');
$client->setCookieJar(true);
/** @var $response Zend_Http_Response */
$response = $client->request();

echo $response;