WP-Polls 将 IP 限制设置为 2

Posted

技术标签:

【中文标题】WP-Polls 将 IP 限制设置为 2【英文标题】:WP-Polls set IP limit at 2 【发布时间】:2014-04-03 17:59:59 【问题描述】:

我正在使用wp-polls,需要限制每个 IP 的投票数。虽然这通常默认设置为 1,但我需要将每个 IP 的投票数限制为 2。

我一直在阅读文档,使用插件代码,并在 google 和 SO 上四处寻找,似乎找不到合适的方法。

我考虑过使用 cookie,但这些更难捕捉,因为我也可以清空我的 cookie,瞧,它已经完成了。 我需要一个限制,因为我不希望人们无休止地投票 查看数据库,我想这与pollip_ip 字段(来自(prefix)_pollsip)表有关,但不熟悉编辑 WP 插件,这就是我所要做的。

作为参考,这里有一些失败的代码

wp-polls.php,第 1323 行

// original code
// if($check_voted == 0)  


// proposed by @birgire
if( $check_voted == 0 || ( is_array( $check_voted ) && 2 >= count( $check_voted ) ) ) 

wp-polls.php,第 1323 行

// original code
// if($check_voted == 0)  


// alternative of code proposed by @birgire
if( ($check_voted == 0) || count($check_voted) <= 2)

【问题讨论】:

【参考方案1】:

当我浏览插件源时,我看不到任何可用的过滤器。

我想知道如果你替换wp-polls.php 文件的#1323 行,它是否会起作用:

 if($check_voted == 0) 

与:

 if( $check_voted == 0 
     || ( is_array( $check_voted ) && 2 >= count( $check_voted ) ) ) 

将每个 IP 的投票数限制为 2。

另外:

将#140 行替换为:

if( !is_array($check_voted) && intval($check_voted) > 0  
     || (is_array($check_voted) && sizeof($check_voted) > 1)
     || ($poll_active == 0 && $poll_close == 1)) 

但我一般不建议修改插件文件,因为它会在下次插件更新时恢复。

旁注:该插件在为$wpdb-&gt;query()准备SQL时没有使用推荐的$wpdb-&gt;prepare()

【讨论】:

上述答案似乎是合理的,但在尝试此代码时没有加载页面内容(查看源代码为空!)不太可能。话虽如此,我会给你半分的推荐。我明白这不是最优的,但这是客户的要求,这让我很恼火。 听起来像是 PHP 语法错误,你激活了WP_DEBUG 吗? 是的,我确实在我的 wp-config 中激活了 WP_DEBUG 好的,所以你得到一个白屏并且没有错误消息?当您恢复更改时,您会恢复网站吗? 我安装了插件,以上更改允许我为每个 IP 投票 2 次 - 但我只测试了一个 IP ;-)

以上是关于WP-Polls 将 IP 限制设置为 2的主要内容,如果未能解决你的问题,请参考以下文章

nginx限制ip并发数

DISCUZ登陆限制IP绕过

防止恶意攻击短信验证码接口方法

wdcp后台访问安全设置即限制域名/IP访问设置及清除方法

Linux防火墙iptables限制几个特定ip才能访问服务器。

Linux防火墙iptables限制几个特定ip才能访问服务器。