Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

小修改[浏览帖子显示 IP & 封锁IP](更新于8月31日)

[复制链接]
locly 发表于 2006-8-25 16:27:49 | 显示全部楼层
能不能做一个只要是会员就可以看?

对于一般的论坛来说没必要隐藏起来哦.大家看到大家是那里的多好啊
回复

使用道具 举报

小特工 发表于 2006-8-25 17:32:56 | 显示全部楼层
这个功能有点像FD的LITE
回复

使用道具 举报

 楼主| mastermind007 发表于 2006-8-25 17:41:27 | 显示全部楼层

回复 #11 locly 的帖子

如果您觉得没问题的话,把第二步骤加上的代码换成
但IP被人知道了总会有心慌慌吧,怕被人攻击

  1.         <table align="right" border="0">
  2.                   <!--{if $allowbanip}-->IP: <a href="admincp.php?action=ipban&ip=$post[useip]" alt="地理位置: $post[iplocation]{LF}[点击禁止IP]" target="_blank">$post[useip]</a>
  3.                   <!--{else}-->IP: <a alt="地理位置: $post[iplocation]">$post[useip]</a><!--{/if}--></table></div>
复制代码

[ 本帖最后由 mastermind007 于 2006-8-25 19:52 编辑 ]
回复

使用道具 举报

locly 发表于 2006-8-25 19:40:07 | 显示全部楼层
原帖由 mastermind007 于 2006-8-25 17:41 发表
如果您觉得没问题的话,把第二步骤加上的代码换成

        <table align="right" border="0">
                  <!--{if $allowbanip}-->IP: <a href="admincp.php ...



同样只有管理组可见,普通会员还是看不了.只看到部分字.没解决函数权限.
admincp.php 也要修改吧.因为要调用admincp.php 的话就需要管理权限.如果可以直接将相关代码放到viewthread.php的话速度也会提升

[ 本帖最后由 locly 于 2006-8-25 19:42 编辑 ]
回复

使用道具 举报

 楼主| mastermind007 发表于 2006-8-25 19:45:42 | 显示全部楼层

回复 #14 locly 的帖子

抱歉,忘了第一个步骤的


  1. if($allowviewip){
  2.   require_once DISCUZ_ROOT.'./include/misc.func.php';
  3.                      }
复制代码

换成

  1. require_once DISCUZ_ROOT.'./include/misc.func.php';
复制代码

再把

  1.       if($allowviewip){
  2.                 $post['iplocation'] = convertip($post['useip']);
  3.                             }
复制代码

换成

  1. $post['iplocation'] = convertip($post['useip']);
复制代码

admincp.php无须修改
回复

使用道具 举报

kkvkk 发表于 2006-8-25 19:57:10 | 显示全部楼层
回复

使用道具 举报

locly 发表于 2006-8-25 20:12:21 | 显示全部楼层
可以了.谢谢

另外问一下.能不能将代码移到viewthread.php

这样就不用整个文件调用了
回复

使用道具 举报

 楼主| mastermind007 发表于 2006-8-25 20:49:16 | 显示全部楼层

回复 #17 locly 的帖子

可以
viewthread.php
把require_once DISCUZ_ROOT.'./include/misc.func.php';
换成

  1. function convertip($ip) {
  2.         if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {
  3.                 return '';
  4.         }

  5.         if($fd = @fopen(DISCUZ_ROOT.'./ipdata/wry.dat', 'rb')) {

  6.                 $ip = explode('.', $ip);
  7.                 $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

  8.                 $DataBegin = fread($fd, 4);
  9.                 $DataEnd = fread($fd, 4);
  10.                 $ipbegin = implode('', unpack('L', $DataBegin));
  11.                 if($ipbegin < 0) $ipbegin += pow(2, 32);
  12.                 $ipend = implode('', unpack('L', $DataEnd));
  13.                 if($ipend < 0) $ipend += pow(2, 32);
  14.                 $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

  15.                 $BeginNum = 0;
  16.                 $EndNum = $ipAllNum;

  17.                 while($ip1num > $ipNum || $ip2num < $ipNum) {
  18.                         $Middle= intval(($EndNum + $BeginNum) / 2);

  19.                         fseek($fd, $ipbegin + 7 * $Middle);
  20.                         $ipData1 = fread($fd, 4);
  21.                         if(strlen($ipData1) < 4) {
  22.                                 fclose($fd);
  23.                                 return 'System Error';
  24.                         }
  25.                         $ip1num = implode('', unpack('L', $ipData1));
  26.                         if($ip1num < 0) $ip1num += pow(2, 32);

  27.                         if($ip1num > $ipNum) {
  28.                                 $EndNum = $Middle;
  29.                                 continue;
  30.                         }

  31.                         $DataSeek = fread($fd, 3);
  32.                         if(strlen($DataSeek) < 3) {
  33.                                 fclose($fd);
  34.                                 return 'System Error';
  35.                         }
  36.                         $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
  37.                         fseek($fd, $DataSeek);
  38.                         $ipData2 = fread($fd, 4);
  39.                         if(strlen($ipData2) < 4) {
  40.                                 fclose($fd);
  41.                                 return 'System Error';
  42.                         }
  43.                         $ip2num = implode('', unpack('L', $ipData2));
  44.                         if($ip2num < 0) $ip2num += pow(2, 32);

  45.                         if($ip2num < $ipNum) {
  46.                                 if($Middle == $BeginNum) {
  47.                                         fclose($fd);
  48.                                         return 'Unknown';
  49.                                 }
  50.                                 $BeginNum = $Middle;
  51.                         }
  52.                 }

  53.                 $ipFlag = fread($fd, 1);
  54.                 if($ipFlag == chr(1)) {
  55.                         $ipSeek = fread($fd, 3);
  56.                         if(strlen($ipSeek) < 3) {
  57.                                 fclose($fd);
  58.                                 return 'System Error';
  59.                         }
  60.                         $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
  61.                         fseek($fd, $ipSeek);
  62.                         $ipFlag = fread($fd, 1);
  63.                 }

  64.                 if($ipFlag == chr(2)) {
  65.                         $AddrSeek = fread($fd, 3);
  66.                         if(strlen($AddrSeek) < 3) {
  67.                                 fclose($fd);
  68.                                 return 'System Error';
  69.                         }
  70.                         $ipFlag = fread($fd, 1);
  71.                         if($ipFlag == chr(2)) {
  72.                                 $AddrSeek2 = fread($fd, 3);
  73.                                 if(strlen($AddrSeek2) < 3) {
  74.                                         fclose($fd);
  75.                                         return 'System Error';
  76.                                 }
  77.                                 $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
  78.                                 fseek($fd, $AddrSeek2);
  79.                         } else {
  80.                                 fseek($fd, -1, SEEK_CUR);
  81.                         }

  82.                         while(($char = fread($fd, 1)) != chr(0))
  83.                                 $ipAddr2 .= $char;

  84.                         $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
  85.                         fseek($fd, $AddrSeek);

  86.                         while(($char = fread($fd, 1)) != chr(0))
  87.                                 $ipAddr1 .= $char;
  88.                 } else {
  89.                         fseek($fd, -1, SEEK_CUR);
  90.                         while(($char = fread($fd, 1)) != chr(0))
  91.                                 $ipAddr1 .= $char;

  92.                         $ipFlag = fread($fd, 1);
  93.                         if($ipFlag == chr(2)) {
  94.                                 $AddrSeek2 = fread($fd, 3);
  95.                                 if(strlen($AddrSeek2) < 3) {
  96.                                         fclose($fd);
  97.                                         return 'System Error';
  98.                                 }
  99.                                 $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
  100.                                 fseek($fd, $AddrSeek2);
  101.                         } else {
  102.                                 fseek($fd, -1, SEEK_CUR);
  103.                         }
  104.                         while(($char = fread($fd, 1)) != chr(0))
  105.                                 $ipAddr2 .= $char;
  106.                 }
  107.                 fclose($fd);

  108.                 if(preg_match('/http/i', $ipAddr2)) {
  109.                         $ipAddr2 = '';
  110.                 }
  111.                 $ipaddr = "$ipAddr1 $ipAddr2";
  112.                 $ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr);
  113.                 $ipaddr = preg_replace('/^\s*/is', '', $ipaddr);
  114.                 $ipaddr = preg_replace('/\s*$/is', '', $ipaddr);
  115.                 if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
  116.                         $ipaddr = 'Unknown';
  117.                 }

  118.                 return $ipaddr;

  119.         } else {

  120.                 $datadir = DISCUZ_ROOT.'./ipdata/';
  121.                 $ip_detail = explode('.', $ip);
  122.                 if(file_exists($datadir.$ip_detail[0].'.txt')) {
  123.                         $ip_fdata = @fopen($datadir.$ip_detail[0].'.txt', 'r');
  124.                 } else {
  125.                         if(!($ip_fdata = @fopen($datadir.'0.txt', 'r'))) {
  126.                                 return 'Invalid IP data file';
  127.                         }
  128.                 }
  129.                 for ($i = 0; $i <= 3; $i++) {
  130.                         $ip_detail[$i] = sprintf('%03d', $ip_detail[$i]);
  131.                 }
  132.                 $ip = join('.', $ip_detail);
  133.                 do {
  134.                         $ip_data = fgets($ip_fdata, 200);
  135.                         $ip_data_detail = explode('|', $ip_data);
  136.                         if($ip >= $ip_data_detail[0] && $ip <= $ip_data_detail[1]) {
  137.                                 fclose($ip_fdata);
  138.                                 return $ip_data_detail[2].$ip_data_detail[3];
  139.                         }
  140.                 } while(!feof($ip_fdata));
  141.                 fclose($ip_fdata);
  142.                 return 'UNKNOWN';

  143.         }

  144. }
复制代码

[ 本帖最后由 mastermind007 于 2006-8-25 21:13 编辑 ]
回复

使用道具 举报

locly 发表于 2006-8-25 21:12:33 | 显示全部楼层
谢谢楼主了.我研究了好久都没成功.终于可以了

还剩下一个难题:快速发帖不能添加表情..我用的表情不同意般的.续是调用post_sminsert.htm

就是下拉的效果
插入表情图标(←点击下拉)  转贴工具(←点击下拉)  

试了很多方法都不能显示表情

网站是:http://www.zhku.com/bbs   帐号密码:test

希望可以帮一下忙
回复

使用道具 举报

 楼主| mastermind007 发表于 2006-8-25 21:15:35 | 显示全部楼层

回复 #19 locly 的帖子

下拉好像与js有关联
我没学过js,不懂了,抱歉…
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 08:04 , Processed in 0.028963 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表