基于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. 不会代码的人只能有就用,没有就罢了。

    1. FROYO

      我们有万能的百度和Google哇

  2. 我记得的cPanel的有IP拒绝的功能吧,然后,我的虚拟空间是CP的

    1. FROYO

      羡慕啊,我这破空间,只有一个FTP,后台还得自己上传一个

      1. 額,Plesk面板的免費空間都有,cPanel已經爛大街啦

  3. 经过查阅,发现wordpress后台自带已有此功能。

    1. Era

      这个真有?
      阻止垃圾评论?

      1. 看我下面那条评论。

    2. FROYO

      后面还一篇没发,结合着用

      1. 那赶紧上吧,观众等不及了。

        1. FROYO

          定期,慢慢来

    3. 并且比这个更完善~ :evil:

      1. 是的。不单单局限于IP。

  4. Discuz貌似后台直接有设置项。wordpress后台讨论那里能实现不?

  5. 这个功能不错

评论已关闭