帝国论坛帝国网站管理系统交流区模板/标签/插件共享交流[原创]分类信息有效防止外地垃圾信息的提交处理办法 【本版专题贴子】  
 1/7     1 2 3 4 5 6 7 ›› ›|
主题:[原创]分类信息有效防止外地垃圾信息的提交处理办法 [加入收藏夹]   

A君
用户头衔:进士

精华贴   :2
发贴数   :474
经验值   :1951
注册时间:2005-02-24
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]分类信息有效防止外地垃圾信息的提交处理办法
第1步、把下面的代码加入到 /e/class/uesrfun.php 中。
其中tinyipdata.dat,是用的discuz x2的最新IP数据库,自行拷贝到/e/class/ipdata/目录下。
wry.dat,这个IP数据库不要管,运行不到
最后的/index.html,自行修改成自己的默认首页文件名。


//获取IP的地理位置
function infoip($ip) {

        $return = '';

        if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {

                $iparray = explode('.', $ip);

                if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
                        $return = 'LAN';
                } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
                        $return = 'Invalid IP Address';
                } else {
                        $tinyipfile = dirname(__FILE__).'../ipdata/tinyipdata.dat';
                        $fullipfile = dirname(__FILE__).'../ipdata/wry.dat';
                        if(@file_exists($tinyipfile)) {
                                $return = convertip_tiny($ip, $tinyipfile);
                        } elseif(@file_exists($fullipfile)) {
                                $return = convertip_full($ip, $fullipfile);
                        }
                }
        }

        return $return;

}

function convertip_tiny($ip, $ipdatafile) {

        static $fp = NULL, $offset = array(), $index = NULL;

        $ipdot = explode('.', $ip);
        $ip    = pack('N', ip2long($ip));

        $ipdot[0] = (int)$ipdot[0];
        $ipdot[1] = (int)$ipdot[1];

        if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {
                $offset = @unpack('Nlen', @fread($fp, 4));
                $index  = @fread($fp, $offset['len'] - 4);
        } elseif($fp == FALSE) {
                return  'Invalid IP data file';
        }

        $length = $offset['len'] - 1028;
        $start  = @unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);

        for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) {

                if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} >= $ip) {
                        $index_offset = @unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");
                        $index_length = @unpack('Clen', $index{$start + 7});
                        break;
                }
        }

        @fseek($fp, $offset['len'] + $index_offset['len'] - 1024);
        if($index_length['len']) {
                return @fread($fp, $index_length['len']);
        } else {
                return 'Unknown';
        }

}

function allowip($local){
        $userip = egetip();
        $_tmpare = '';
        $_tmpare = infoip($userip);
        $pos = strpos($_tmpare, $local);
        if($pos === false) {
                printerror('BlackIP', '/index.html', 1);
        }
}

function blackip($local){
        $userip = egetip();
        $_tmpare = '';
        $_tmpare = infoip($userip);
        $pos = strpos($_tmpare, $local);
        if($pos !== false) {
                printerror('BlackIP', '/index.html', 1);
        }
}


第2步、在 /e/DoInfo/ecms.php 文件里加入一下代码:
allowip,是可以通过的IP,blackip,是不允许通过的IP。如下,则是江苏(除去苏州)的IP可以提交信息

//限制发布信息的IP
allowip("江苏");
blackip("苏州");
.......



第3步、在 /e/data/language/gb/pub/q_message.php 下面加上语言包里的提示信息:

'BlackIP'=>'您的IP不允许发布信息',



I'm aijun.
2012-03-16 10:55:05 已设置保密 顶部 回复 引用 报告 编辑 删除

不学无术
用户头衔:书生

精华贴   :0
发贴数   :11
经验值   :45
注册时间:2011-10-27
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

好东西啊。谢谢小A的分享。




2012-03-16 10:59:15 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :3930
经验值   :11975
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

支持




2012-03-16 14:10:19 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :3930
经验值   :11975
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

没.dat文件呀




2012-03-16 14:11:03 已设置保密 顶部 回复 引用 报告 编辑 删除

hibaidu
用户头衔:探花

精华贴   :0
发贴数   :3930
经验值   :11975
注册时间:2010-05-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

知道了,是用dzx2的文件




2012-03-16 14:13:13 已设置保密 顶部 回复 引用 报告 编辑 删除

懂事的猫
用户头衔:进士

精华贴   :0
发贴数   :1848
经验值   :5640
注册时间:2011-03-04
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

谢谢分享




2012-03-16 14:24:31 已设置保密 顶部 回复 引用 报告 编辑 删除

hlp
用户头衔:探花 *

精华贴   :0
发贴数   :2612
经验值   :7939
注册时间:2008-03-17
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

不错




2012-03-16 14:37:45 已设置保密 顶部 回复 引用 报告 编辑 删除

bransln
用户头衔:书生

精华贴   :0
发贴数   :4
经验值   :15
注册时间:2012-03-06
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

好东西



必能信超声波
2012-03-16 15:20:29 已设置保密 顶部 回复 引用 报告 编辑 删除

laolin
用户头衔:书生

精华贴   :0
发贴数   :7
经验值   :158
注册时间:2008-05-30
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

也来一段






//==========================================================================================================
//====限制IP================================================================================================
//==========================================================================================================

function _get_client_ip() {
        $clientip = '';
        if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
                $clientip = getenv('HTTP_CLIENT_IP');
        } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
                $clientip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
                $clientip = getenv('REMOTE_ADDR');
        } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
                $clientip = $_SERVER['REMOTE_ADDR'];
        }

        preg_match("/[\d\.]{7,15}/", $clientip, $clientipmatches);
        $clientip = $clientipmatches[0] ? $clientipmatches[0] : 'unknown';
        return $clientip;
}

function get_city($ip=null) {
        $ip = ($ip) ? $ip :$_SERVER['REMOTE_ADDR'];
        $url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=txt&ip=$ip";
        $res = file_get_contents($url);
        return $res;
}


$iplocation = get_city(_get_client_ip());
if($mid==8 || $mid==9 || $mid==14 || $mid==15){
        if(!preg_match("/福州/i", $iplocation) && !preg_match("/龙田/i", $iplocation) && !preg_match("/福清/i", $iplocation)){
                printerror('<p>抱歉,本站仅接受福清地区发布的信息。</p><p>您的IP:'._get_client_ip().'</p><p>系统认为您来自:'.$iplocation.'</p><p>如果IP识别有误请联系客服QQ:<a href="http://sighttp.qq.com/cgi-bin/check?sigkey=51be70c5b81137cb795f7652d7e9a985b306f8400d518dd58914b2ef993261fe"; target=_blank; onclick="var tempSrc=\'http://sighttp.qq.com/wpa.js?rantime=\'+Math.random()+\'&sigkey=51be70c5b81137cb795f7652d7e9a985b306f8400d518dd58914b2ef993261fe\';var oldscript=document.getElementById(\'testJs\');var newscript=document.createElement(\'script\');newscript.setAttribute(\'type\',\'text/javascript\'); newscript.setAttribute(\'id\', \'testJs\');newscript.setAttribute(\'src\',tempSrc);if(oldscript == null){document.body.appendChild(newscript);}else{oldscript.parentNode.replaceChild(newscript, oldscript);}return false;"><img alt="qq交谈:4997566" src="http://www.cnfq.com/images/qqonline.gif" border=0></a></p>','',1,0,1);
                exit;
        } else {
                //echo $iplocation;
        }
}
//==========================================================================================================
//====限制IP================================================================================================
//==========================================================================================================
//echo get_city('121.41.244.94');











2012-03-16 15:52:10 已设置保密 顶部 回复 引用 报告 编辑 删除

不学无术
用户头衔:书生

精华贴   :0
发贴数   :11
经验值   :45
注册时间:2011-10-27
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

老林也出来了。都是高手啊,收藏收藏。




2012-03-16 16:08:22 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/7     1 2 3 4 5 6 7 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1