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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] 社区监狱 4.0 For 5.0.0 [06/12/30] [官方安全修正]

[复制链接]
freddy 发表于 2006-12-30 18:05:14 | 显示全部楼层 |阅读模式
//===========================================================
//插件名称:社区监狱 4.0
//适用版本:Discuz! 5.0.0
//插件编码:GBK
//作  者:pk0909,童虎,rel4x,connan
//最后修改:Freddy
//最后更新:2006-12-30
//技术支持:discuz.dismall.com
//数据升级:有
//修改文件:include/newthread.inc.php、include/global.func.php、include/newreply.inc.php、include/editpost.inc.php
//修改模版:无
//===========================================================


注意事项:
1、请先设置好后台再玩这个插件,不然出了问题请自行解决。
2、请自行修改监狱插件的公告再玩。
3、监狱长(管理员默认为监狱长)、管理员、总版主、版主可进行抓人。



插件升级说明:
1、修正了2处严重漏洞以及17处小错误。(Freddy,Maple-X)
2、增强逃狱功能,并且修正一处刷逃狱的BUG。(Freddy)
3、增加了所有操作的PMs。(Freddy)
4、后台增加积分策略。(Freddy)
5、为用户增加了各种选项。如:劫狱失败的被关时间、插件页面显示多少犯人再进行翻页、有无保释金的各种劫狱机率的不同设置等等。(Freddy)
6、修正了原版本中的犯人的页面显示不恰当的地方。(Freddy)
7、代码重排。(Freddy)

全新安装开始:(升级安装在二楼)



1 上传upload内的文件!!!

2 升级数据库

MYSQL 版本 > 4.0.* 的升级以下两个表、并根据自己论坛的字符集将gbk设置成相应的:


  1. CREATE TABLE `cdb_postban` (
  2.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  3.   `username` varchar(15) NOT NULL default '',
  4.   `opername` varchar(15) NOT NULL default '',
  5.   `fid` smallint(6) unsigned NOT NULL default '0',
  6.   `timelimit` int(10) unsigned NOT NULL default '0',
  7.   `starttime` int(10) unsigned NOT NULL default '0',
  8.   `pbmoney` int(10) NOT NULL default '0',
  9.   `reason` text NOT NULL,
  10.   PRIMARY KEY  (`pb_id`),
  11.   KEY `fid` (`fid`)
  12. ) TYPE=MyISAM DEFAULT CHARSET=gbk ;

  13. CREATE TABLE `cdb_postban_escapelog` (
  14.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  15.   `prison` varchar(15) NOT NULL default '',
  16.   `starttime` int(10) unsigned NOT NULL default '0',
  17.   PRIMARY KEY  (`pb_id`)
  18. ) ENGINE=MyISAM DEFAULT CHARSET=gbk ;
复制代码


MYSQL 版本 <= 4.0.* 的升级以下两个表:


  1. CREATE TABLE `cdb_postban` (
  2.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  3.   `username` varchar(15) NOT NULL default '',
  4.   `opername` varchar(15) NOT NULL default '',
  5.   `fid` smallint(6) unsigned NOT NULL default '0',
  6.   `timelimit` int(10) unsigned NOT NULL default '0',
  7.   `starttime` int(10) unsigned NOT NULL default '0',
  8.   `pbmoney` int(10) NOT NULL default '0',
  9.   `reason` text NOT NULL,
  10.   PRIMARY KEY  (`pb_id`),
  11.   KEY `fid` (`fid`)
  12. ) TYPE=MyISAM ;

  13. CREATE TABLE `cdb_postban_escapelog` (
  14.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  15.   `prison` varchar(15) NOT NULL default '',
  16.   `starttime` int(10) unsigned NOT NULL default '0',
  17.   PRIMARY KEY  (`pb_id`)
  18. ) ENGINE=MyISAM ;
复制代码


3 在 include/global.func.php 文件的最后 PHP结束符(?>)之前,插入以下代码:



  1. //==============禁言检查函数Begin===============
  2. function postban_check($fid, $theuser){
  3.         global $adminid, $db, $tablepre, $postban; //fixed by Freddy
  4.         if (!$fid || !$theuser) {
  5.                 return 1;
  6.         }
  7.         if ($adminid == '1' || $adminid == '2' || $adminid == '3') {
  8.                 return 1;
  9.         } else {
  10.                 $timestamp = time();
  11.                 $fid=intval($fid);
  12.                 if ($fid < '1') {
  13.                         return 0;
  14.                 }

  15.                 $qq = $db->query("SELECT count(*) FROM {$tablepre}postban WHERE (fid='$fid' or fid='65535') AND username='$theuser' AND timelimit > $timestamp");

  16.                 $post_bancount = $db->result($qq, 0);

  17.                 if ($post_bancount) {
  18.                         return 0;
  19.                 } else {
  20.                         return 1;
  21.                 }
  22.         }
  23. }
  24. //=====================END======================
复制代码



4 include/newthread.inc.php

查找:

  1. if($subject == '' || $message == '') {
  2.                 showmessage('post_sm_isnull');
  3.         }
复制代码


上面插入:


  1. //===========板块禁言检查begin========
  2. if (!$ismoderator) {
  3.         if (!postban_check($forum[fid], $discuz_user)) {
  4.                 showmessage('你在本板块被禁言,不能发贴和编辑');
  5.         }
  6. }
  7. //===========板块禁言检查end==========
复制代码


5 include/newreply.inc.php

查找:

  1. if($subject == '' && $message == '') {
复制代码


上面插入:


  1. //===========板块禁言检查begin========
  2. if (!$ismoderator) {
  3.         if (!postban_check($forum[fid], $discuz_user)) {
  4.                 showmessage('你在本板块被禁言,不能发贴和编辑');
  5.         }
  6. }
  7. //===========板块禁言检查end==========
复制代码


6 include/editpost.inc.php

查找:

  1. if(empty($delete)) {
复制代码


上面插入:


  1. //===========板块禁言检查begin========
  2. if (!$ismoderator) {
  3.         if (!postban_check($forum[fid], $discuz_user)) {
  4.                 showmessage('你在本板块被禁言,不能发贴和编辑');
  5.         }
  6. }
  7. //===========板块禁言检查end==========
复制代码


7 在后台的插件添加里面,导入附件里面那个upload外的txt文件:)

8 更新缓存+后台设置


有关此插件的疑问请全部到此贴回复说明!!!
https://discuz.dismall.com/thread-497153-1-1.html


[ 本帖最后由 freddy 于 2006-12-31 10:03 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

 楼主| freddy 发表于 2006-12-30 18:10:56 | 显示全部楼层

社区监狱 3.0 -> 4.0 升级安装开始:

注意:这次的4.0版是根据https://discuz.dismall.com/thread-230718-1-2.html基础上开发的,所以只有装过https://discuz.dismall.com/thread-230718-1-2.html的朋友才可以往下看!!!

一、升级数据库:

MYSQL 版本 > 4.0.* 的升级以下表、并根据自己论坛的字符集将gbk设置成相应的:


  1. CREATE TABLE `cdb_postban_escapelog` (
  2.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  3.   `prison` varchar(15) NOT NULL default '',
  4.   `starttime` int(10) unsigned NOT NULL default '0',
  5.   PRIMARY KEY  (`pb_id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=gbk ;
复制代码


MYSQL 版本 <= 4.0.* 的升级以下表:


  1. CREATE TABLE `cdb_postban_escapelog` (
  2.   `pb_id` int(10) unsigned NOT NULL auto_increment,
  3.   `prison` varchar(15) NOT NULL default '',
  4.   `starttime` int(10) unsigned NOT NULL default '0',
  5.   PRIMARY KEY  (`pb_id`)
  6. ) ENGINE=MyISAM ;
复制代码


二、将插件文件包上传覆盖以前的插件文件。

三、将以前添加在include/global.func.php内的函数替换成下面的函数:


  1. //==============禁言检查函数Begin===============
  2. function postban_check($fid, $theuser){
  3.         global $adminid, $db, $tablepre, $postban; //fixed by Freddy
  4.         if (!$fid || !$theuser) {
  5.                 return 1;
  6.         }
  7.         if ($adminid == '1' || $adminid == '2' || $adminid == '3') {
  8.                 return 1;
  9.         } else {
  10.                 $timestamp = time();
  11.                 $fid=intval($fid);
  12.                 if ($fid < '1') {
  13.                         return 0;
  14.                 }

  15.                 $qq = $db->query("SELECT count(*) FROM {$tablepre}postban WHERE (fid='$fid' or fid='65535') AND username='$theuser' AND timelimit > $timestamp");

  16.                 $post_bancount = $db->result($qq, 0);

  17.                 if ($post_bancount) {
  18.                         return 0;
  19.                 } else {
  20.                         return 1;
  21.                 }
  22.         }
  23. }
  24. //=====================END======================
复制代码


最后:更新缓存+后台设置。

[ 本帖最后由 freddy 于 2006-12-30 18:12 编辑 ]
回复

使用道具 举报

 楼主| freddy 发表于 2006-12-30 18:13:29 | 显示全部楼层
Reserved.
回复

使用道具 举报

 楼主| freddy 发表于 2006-12-31 09:59:11 | 显示全部楼层
现在FOR D5的这个还没有,所以我就把这个放出了.TB的很多人PM说不要,要我这个,所以么,呵呵.
功能上只是一点更新而已.主要还是修复了些安全问题.所以建议升级!
楼下回复的注意,我先小人后君子,不要乱骂人,过节了,不要伤和气,我没强迫任何人用.觉得不好或者不想用也别回复.谢谢!
回复

使用道具 举报

babyq 发表于 2006-12-31 10:05:53 | 显示全部楼层
沙发~~~1
回复

使用道具 举报

chinaoy 发表于 2006-12-31 10:06:29 | 显示全部楼层
终于可以了,顶啊!
回复

使用道具 举报

chinaoy 发表于 2006-12-31 10:12:14 | 显示全部楼层
我觉得提示信息还可以写得更人性化一点,呵呵
回复

使用道具 举报

好享空间 发表于 2006-12-31 10:18:00 | 显示全部楼层
还有前排啊...支持
回复

使用道具 举报

超级噻酚 发表于 2006-12-31 10:18:03 | 显示全部楼层
支持!下班回去就安装!
回复

使用道具 举报

E浪 发表于 2006-12-31 10:18:49 | 显示全部楼层
沙发,,支持.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 21:10 , Processed in 0.148999 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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