Typecho 文档:限制指定 IP 段访问者评论

2023年08月05日

适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/3506.html
许可方式:CC BY-NC-SA

注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。

敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。

文档说明

为什么会琢磨出这个文档,嗯,不胜其烦,懂的能懂……


使用方法

A 涉及文件

usr/themes/***/comments.php

B 改造文件

作用:指定 IP 段访问者无法使用评论表单。

打开你在用主题下的文件 comments.php 搜索找到以下代码,以 Typecho 默认主题为例(不同主题可能形式不同,作用是开启评论功能):

    <?php if ($this->allow('comment')): ?>

将以上代码全部替换为以下代码(留意注释,以及按需修改):

    <?php

    function checkIP($ip, $limitIPs) { //限制指定 IP 段访问者评论
        $ipLong = ip2long($ip);

        foreach ($limitIPs as $limitIP) {
            $startIpLong = ip2long($limitIP['start']);
            $endIpLong = ip2long($limitIP['end']);

            if ($ipLong >= $startIpLong && $ipLong <= $endIpLong) { //检查访问者的 IP 是否在当前 IP 段内
                return true;
            }
        }

        return false;
    }

    $IPArr = array( //指定限制访问的 IP 段,可根据需要添加更多 IP 段
        array('start' => '192.168.0.0', 'end' => '192.168.255.255'), //示例 IP 段,请自行更改
        array('start' => '10.0.0.1', 'end' => '10.0.0.100'), //示例 IP 段,请自行更改
        // 使用相同的方式添加更多 IP 段
    );

    ?>

    <?php if ($this->allow('comment') && !checkIP($_SERVER['REMOTE_ADDR'], $IPArr)): ?>

至此,已完成限制指定 IP 段访问者评论的设置,处在 IP 段的访问者将无法使用评论表单,看到的是(评论已关闭)。
store