本HACK不很完善
编辑帖子和引用内容可以看到帖子信息
hidto后面第一个用户名无效
装前慎重
折腾一晚上,累
Hack:hideto标签
作者:文文の封印
资源占用:小
安装难度:极简单
修改文件:include/discuzcode.php
说明:跟hide标签一样,隐藏信息用的,不同的是,只对你希望的用户可见
用法[hideto=xxx,yyy,zzz,aaa,bbb........nnn]信息[/hideto](xxx,yyy什么的是用户名,半角逗号链接
本代码极其保密,简单说就是,只要用户打上了[hideto,即使后面信息不全,别人也看不到保密信息,并且帖子红字显示,提醒作者及时更改。而且就算是管理员也不可见(给人家点隐私吧)正因为容错功能比较强大,导致一个帖子只能用一个[hideto标签,否则后面的标签会被前面的覆盖
修改开始:
打开include/discuzcode.php
找到:
- ,$credit, $tid, $discuz_uid,
复制代码
前面加
找到
- }
- if(!$bbcodeoff && $allowimgcode) {
复制代码
上面加
- //Hideto 标签 By FY-------------------------------------------------------------------------------------------------------
- if(preg_match("/\[hideto=.+\].+?/is", $message)) {
- $usernames = explode(",",preg_replace("/\[hideto=(.+?)\](.+)/is", "\\1", $message));
- $userlist = $result = $comma ="";
- foreach($usernames as $username){
- $userlist .= $comma."'".addslashes(trim($username))."'";
- $comma = ",";
- $result[] = trim($username);
- }
- $query = $db->query("SELECT username FROM $GLOBALS[table_members] WHERE username IN($userlist)");
- if(!$db->num_rows($query)){
- $err = 1 ;
- $errstr = "<BR>--------(hideto标签中的全部用户名无效,请作者即时更改)--------";
- }elseif($db->num_rows($query)!=count($usernames)){
- $err = 2 ;
- $errstr = "<BR>-------(hideto标签中的部分用户名无效,请作者即时更改)---------";
- }
- if(preg_match("/\[hideto=.+\].+?\[\/hideto\]/is", $message) && $result!=NULL){
- $replacestr = '/\[hideto=.+\](.+?)\[\/hideto\]/is';
- if(in_array($discuz_user,$result) || $discuz_uid == $post[authorid]){
- $replacemsg = "<b>------本部分消息只有部分用户可见,您在可见列表内,以下是隐藏消息-----".$errstr."</b><br>\\1<br>-------------------------------------------";
- }else{
- $replacemsg = "<font color=red><b>-------------本部分消息只有部分用户可见-----------".$errstr."</b></font>";
- }
- }elseif(preg_match("/\[hideto=.+\].+?\[\/hideto\]/is", $message) && $err==1){
- $replacestr = '/\[hideto=.+\](.+?)\[\/hideto\]/is';
- if($discuz_uid == $post[authorid]){
- $replacemsg = "<b>----本部分消息只有部分用户可见,您在可见列表内,以下是隐藏消息----".$errstr."<br>\\1<br>-------------------------------------------";
- }else{
- $replacemsg = "<font color=red><b>-------------本部分消息只有部分用户可见-----------".$errstr."</b></font>";
- }
- }elseif(!preg_match("/\[hideto=.+\].+?\[\/hideto\]/is",$message)){
- $replacestr = '/\[hideto=.+\](.+)/is';
- if($discuz_uid == $post[authorid]){
- $replacemsg = "<font color=red><b>----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,您是作者,请您及时更改---</b></font><br>\\1<br><font color=red><b>----------------------------------------------</b></font>";
- }else{
- $replacemsg = "<font color=red><b>----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,请作者即时修改。以下消息只有作者可见---</b></font>";
- }
- }
- $message = preg_replace($replacestr, $replacemsg, $message);
- }
- //---------------------------------------------------------------------------------------------------------------------
复制代码
完成
演示
-------------本部分消息只有部分用户可见-----------
-------------本部分消息只有部分用户可见-----------
-------(hideto标签中的部分用户名无效,请作者即时更改)---------
----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,请作者即时修改。以下消息只有作者可见---
[ 本帖最后由 文文の封印 于 2005-8-16 18:39 编辑 ] |