首页 > CMS > Discuz > 正文

discuz x3如何保留源端口

2024-09-11 09:03:09
字体:
来源:转载
供稿:网友

接上级要求论坛需要记录用户的源端口信息,现将实现该功能的方法贴上来以供参考,先说明一下我测试的环境是Disciz X3.

一、简单的插件安装法

进论坛管理后台依次点击“应用” 应用中心,在应用中心中搜索日志,本人安装的是 dzsup用户登录日志(该日志仅记录用户登录的信息,上级安装发贴也要有记录).

还有一个是“端口日志” 该插件只记录发贴的IP和端口(上级要求记录用户登录的源端口)所以这两个都安装就可以了.

二、有权限的用户可以修改数据库、程序、以及模板来自己设置,因为目前这两个插件还是免费的,但如果收费的话我们就要另想办法、要不就出钱购买.

步骤如下:

1、修改数据库

a.增加会员状态表字段,端口IP端口、最后访问端口、类型CHAR 长度 6

  1. ALTER TABLE  `pre_common_member_status` ADD  `regipport` CHAR( 6 ) NOT NULL DEFAULT  '0' AFTER  `lastip` ,   
  2. ADD  `lastipport` CHAR( 6 ) NOT NULL DEFAULT  '0' AFTER  `regipport`   

b.增加帖子表字段、发贴时的端口

  1. ALTER TABLE  `pre_forum_post` ADD  `useport` CHAR( 6 ) NOT NULL DEFAULT  '0' AFTER  `useip`  

2. 修改程序文件 

2.1. 修改用户注册时的程序文件 

source/class/tab/table_common_member.php 292行 搜索 'lastip' => (string) $Ip 下面增加两行:

  1. 'regipport' => (int) $_SERVER['REMOTE_PORT'],   
  2. 'lastipport' => (int) $_SERVER['REMOTE_PORT'],   

2.2 source/class/class_member.php 121行

搜索:C::t('common_member_status')->update($_G['uid'], array('lastip' => $_G['clientip'], 'lastvisit' =>TIMESTAMP, 'lastactivity' => TIMESTAMP));

改为:

  1. C::t('common_member_status')->update($_G['uid'], array('lastip' => $_G['clientip'],'lastipport'=>$_SERVER['REMOTE_PORT'], 'lastvisit' =>TIMESTAMP, 'lastactivity' => TIMESTAMP));   

2.3  source/class/model/model_forum_post.php 139行 在 'status' => $status, 后面增加 'useport' =>  (int) $_SERVER['REMOTE_PORT'],改后为:

  1. $this->pid = insertpost(array(   
  2.             'fid' => $this->forum['fid'],   
  3.             'tid' => $this->thread['tid'],   
  4.             'first' => '0',   
  5.             'author' => $this->member['username'],   
  6.             'authorid' => $this->member['uid'],   
  7.             'subject' => $this->param['subject'],   
  8.             'dateline' => $this->param['timestamp'] ? $this->param['timestamp'] : getglobal('timestamp'),   
  9.             'message' => $this->param['message'],   
  10.             'useip' => $this->param['clientip'] ? $this->param['clientip'] : getglobal('clientip'),   
  11.             'invisible' => $pinvisible,   
  12.             'anonymous' => $this->param['isanonymous'],   
  13.             'usesig' => $usesig,   
  14.             'htmlon' => $htmlon,   
  15.             'bbcodeoff' => $bbcodeoff,   
  16.             'smileyoff' => $smileyoff,   
  17.             'parseurloff' => $parseurloff,   
  18.             'attachment' => '0',   
  19.             'status' => $status,   
  20.             'useport' =>  (int) $_SERVER['REMOTE_PORT'], //Dusion 2013/6/25增加   
  21.         ));   

2.4 source/class/model/model_forum_thread.php 同2.3 202行,代码如下:

  1. $this->pid = insertpost(array(   
  2.             'fid' => $this->forum['fid'],   
  3.             'tid' => $this->tid,   
  4.             'first' => '1',   
  5.             'author' => $this->member['username'],   
  6.             'authorid' => $this->member['uid'],   
  7.             'subject' => $this->param['subject'],   
  8.             'dateline' => $this->param['publishdate'],   
  9.             'message' => $this->param['message'],   
  10.             'useip' => $this->param['clientip'] ? $this->param['clientip'] : getglobal('clientip'),   
  11.             'invisible' => $this->param['pinvisible'],   
  12.             'anonymous' => $this->param['isanonymous'],   
  13.             'usesig' => $this->param['usesig'],   
  14.             'htmlon' => $this->param['htmlon'],   
  15.             'bbcodeoff' => $this->param['bbcodeoff'],   
  16.             'smileyoff' => $this->param['smileyoff'],   
  17.             'parseurloff' => $this->param['parseurloff'],   
  18.             'attachment' => '0',   
  19.             'tags' => $this->param['tagstr'],   
  20.             'replycredit' => 0,   
  21.             'status' => $this->param['pstatus'],   
  22.             'useport' =>  (int) $_SERVER['REMOTE_PORT'], //Dusion 2013/6/25增加  //Vevb.com 
  23.         ));   

到此,程序部分就改完了,暂时还看不到效果.

3 修改模板文件 

3.1 template/default/home/space_profile_body.htm 154 行:

  1. </em>$space[regip] 后面增加:<!--{if $space[regipport] != 0}-->$space[regipport]<!--{/if}-->   
  2.  </em>$space[lastip] 后面增加:<!--{if $space[lastipport] != 0}-->$space[lastipport]<!--{/if}-->   

该文件是用户详细信息的模板.

3.2 template/default/forum/topicadmin_getip.htm 在<b>$member[useip] 后面增加:

<!--{if $member[useport] != 0}-->$member[useport]<!--{/if}-->  

至此所有工作都完成了,下面上一些测试的结果图片.

如果是管理员的话在用户名下方的IP上点右键可以看到IP以及端口,该处的内容是通过 修改程序来实现的,帖子下方的IP和端口(盖着IP的地方)是通过插件来实现的.

该图是管理员查看用户的详细资料时看到的信息 IP后跟着的就是端口号。

该图是通过后台安装的插件用户登录日志1.0.1来看到的效果

希望对有用的人有帮助,目前端口日志1.1是临时免费时间,应该还有一个多月如果要安装的话就抓紧了,如果你是一个phper也可 以自己修改程序来实现.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表