基于PHP的IP地址访问控制,放在任何一个php文件开头都可以起作用。比如说放在wp-comments-post.php开头,黑名单中的IP就无法在博客上发表评论;如果放在评论框前面,那黑名单中的IP只能浏览博客而不能看到评论框;如果放在index.php开头,黑名单中的IP无法打开网站。

源码如下:(这个主题貌似有些问题,有些符号会自动变成全角符,且排版全乱,复制的时候注意替换一下。)

$targetip = $_SERVER['REMOTE_ADDR'];
$SIP = str_replace(", ", "",str_replace($_SERVER['REMOTE_ADDR'], "",$_SERVER["HTTP_X_FORWARDED_FOR"]));
if ($_SERVER["HTTP_X_FORWARDED_FOR"] != "" ) {
$targetip = $SIP;
}
$blacklist = array();
$file = dirname(__FILE__)."/blacklist.txt"; //黑名单文件,一个IP一行
$content = file_get_contents($file);
$blacklist = explode("\n",$content);
if (in_array($targetip, $blacklist)){
echo "您的IP已被列入黑名单,本次访问已被阻止。若为误判,请与网站管理员联系以解除访问限制。";
exit;
}

感觉这样一段代码还是很好用的,我把它放在评论框和wp-comments-post.php中了,也就是说允许Spammer查看网站,但不允许他们发表评论,看下效果:

spammerbanned

标签: PHP, ip, 访问控制

已有 42 条评论

  1. Era

    这个放到评论框的什么地方,今天官方那个ask那个插件有点问题,垃圾评论一把一把的。

    1. 放到评论框输出的位置也行,那样只能阻挡通过网页来评论的,不能阻挡机器人

    2. 放到wp-comments-php的头部,加个if...else...else后面是原来的,if那里判断一下

  2. 今天Google了一下,直接在.htaccess里面现在访问了,但愿能凑效。

    1. FROYO

      能奏效,就是要屏蔽的IP太多,总要添加

  3. 早点看到就好了,可惜我已经转用disqus了...

    1. FROYO

      不会是因为垃圾评论吧,还有很多方法可以阻止垃圾评论,比如多说

  4. 呵呵,有趣!博主还在用搜狗浏览器

    1. FROYO

      每天都不一样

  5. 嗯。不错,留下备用!!!

    1. FROYO

      欢迎来访~~~

  6. 这个很实用!不过IP不是太固定的情况下,你这个会导致一个IP都不能访问么?

    1. FROYO

      如果IP总变的话,就要把新的IP也加入到黑名单中

  7. 机器人这下没地方做了~

    1. FROYO

      一定要搞死他们~~~

  8. 这个比较有用

    1. FROYO

      不法分子太多了,不得不防啊

  9. 博主你博客右边怎么有广告了。。。还是很低俗的那种。。。

    1. FROYO

      这个,你暴露了,那是按照个人兴趣来推荐的

  10. functions.php添加:remove_filter('the_content', 'wptexturize');试试

    1. FROYO

      传说中的代码高亮?

      1. 啥?

        1. 参考自:
          禁用WP自动把英文标点转换为中文标点
          ipeld.net/archives/1652.html

          1. FROYO

            原来是这个,很好很强大,我就不加了。。。

添加新评论