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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[原创]添加hideto标签-对某人开放信息

[复制链接]
PerfectWorks 发表于 2005-8-3 01:00:10 | 显示全部楼层 |阅读模式
本HACK不很完善
编辑帖子和引用内容可以看到帖子信息
hidto后面第一个用户名无效
装前慎重



折腾一晚上,累

Hack:hideto标签
作者:文文の封印
资源占用:小
安装难度:极简单
修改文件:include/discuzcode.php
说明:跟hide标签一样,隐藏信息用的,不同的是,只对你希望的用户可见
用法[hideto=xxx,yyy,zzz,aaa,bbb........nnn]信息[/hideto](xxx,yyy什么的是用户名,半角逗号链接
本代码极其保密,简单说就是,只要用户打上了[hideto,即使后面信息不全,别人也看不到保密信息,并且帖子红字显示,提醒作者及时更改。而且就算是管理员也不可见(给人家点隐私吧)正因为容错功能比较强大,导致一个帖子只能用一个[hideto标签,否则后面的标签会被前面的覆盖


修改开始:
打开include/discuzcode.php
找到:
  1. ,$credit, $tid, $discuz_uid,
复制代码

前面加
  1. $discuz_user,$post,
复制代码

找到

  1.         }

  2.         if(!$bbcodeoff && $allowimgcode) {
复制代码

上面加

  1. //Hideto 标签 By FY-------------------------------------------------------------------------------------------------------
  2.                 if(preg_match("/\[hideto=.+\].+?/is", $message)) {
  3.                         $usernames = explode(",",preg_replace("/\[hideto=(.+?)\](.+)/is", "\\1", $message));
  4.                         $userlist = $result = $comma ="";

  5.                         foreach($usernames as $username){
  6.                                 $userlist .= $comma."'".addslashes(trim($username))."'";
  7.                                 $comma = ",";
  8.                                 $result[] = trim($username);
  9.                         }

  10.                         $query = $db->query("SELECT username FROM $GLOBALS[table_members] WHERE username IN($userlist)");

  11.                         if(!$db->num_rows($query)){
  12.                                 $err = 1 ;
  13.                                 $errstr = "<BR>--------(hideto标签中的全部用户名无效,请作者即时更改)--------";
  14.                         }elseif($db->num_rows($query)!=count($usernames)){
  15.                                 $err = 2 ;
  16.                                 $errstr = "<BR>-------(hideto标签中的部分用户名无效,请作者即时更改)---------";
  17.                         }

  18.                         if(preg_match("/\[hideto=.+\].+?\[\/hideto\]/is", $message) && $result!=NULL){
  19.                                 $replacestr = '/\[hideto=.+\](.+?)\[\/hideto\]/is';
  20.                                 if(in_array($discuz_user,$result) || $discuz_uid == $post[authorid]){
  21.                                         $replacemsg = "<b>------本部分消息只有部分用户可见,您在可见列表内,以下是隐藏消息-----".$errstr."</b><br>\\1<br>-------------------------------------------";
  22.                                 }else{
  23.                                         $replacemsg = "<font color=red><b>-------------本部分消息只有部分用户可见-----------".$errstr."</b></font>";
  24.                                 }
  25.                         }elseif(preg_match("/\[hideto=.+\].+?\[\/hideto\]/is", $message) && $err==1){
  26.                                 $replacestr = '/\[hideto=.+\](.+?)\[\/hideto\]/is';
  27.                                 if($discuz_uid == $post[authorid]){
  28.                                         $replacemsg = "<b>----本部分消息只有部分用户可见,您在可见列表内,以下是隐藏消息----".$errstr."<br>\\1<br>-------------------------------------------";
  29.                                 }else{
  30.                                         $replacemsg = "<font color=red><b>-------------本部分消息只有部分用户可见-----------".$errstr."</b></font>";
  31.                                 }
  32.                         }elseif(!preg_match("/\[hideto=.+\].+?\[\/hideto\]/is",$message)){
  33.                                 $replacestr = '/\[hideto=.+\](.+)/is';
  34.                                 if($discuz_uid == $post[authorid]){
  35.                                         $replacemsg = "<font color=red><b>----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,您是作者,请您及时更改---</b></font><br>\\1<br><font color=red><b>----------------------------------------------</b></font>";
  36.                                 }else{
  37.                                         $replacemsg = "<font color=red><b>----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,请作者即时修改。以下消息只有作者可见---</b></font>";
  38.                                 }
  39.                         }
  40.                         $message = preg_replace($replacestr, $replacemsg, $message);
  41.                 }
  42. //---------------------------------------------------------------------------------------------------------------------
复制代码

完成

演示
-------------本部分消息只有部分用户可见-----------

-------------本部分消息只有部分用户可见-----------
-------(hideto标签中的部分用户名无效,请作者即时更改)---------

----Hideto标签使用错误,可能是由于没有用[/hideto]终结造成,请作者即时修改。以下消息只有作者可见---

[ 本帖最后由 文文の封印 于 2005-8-16 18:39 编辑 ]
 楼主| PerfectWorks 发表于 2005-8-3 01:00:36 | 显示全部楼层
倒在沙发上睡觉了Zzz.....
回复

使用道具 举报

cnteacher 发表于 2005-8-3 01:09:51 | 显示全部楼层
而且就算是管理员也不可见(给人家点隐私吧)


凡是有权限编辑这个帖子的人都可以看到啊。
回复

使用道具 举报

 楼主| PerfectWorks 发表于 2005-8-3 01:16:15 | 显示全部楼层

回复 #3 cnteacher 的帖子

晕……忘了……
太郁闷了……
算了,对于想看的人还是挡不住的,管理员还能翻数据库的说
回复

使用道具 举报

lyxzz 发表于 2005-8-3 06:09:59 | 显示全部楼层
有没有副管理员的插件?
回复

使用道具 举报

1345678 发表于 2005-8-3 06:31:42 | 显示全部楼层
严重支持这种思维方式.
回复

使用道具 举报

爱雨冷雪 发表于 2005-8-3 06:44:43 | 显示全部楼层
一会试下~~!!!
回复

使用道具 举报

winter0706 发表于 2005-8-3 08:53:02 | 显示全部楼层

呵欠.....................

Archiver 要加一個str_replace吧............
回复

使用道具 举报

winter0706 发表于 2005-8-3 09:04:06 | 显示全部楼层

再呵欠.....................

引用的話估計大概又能看到一點吧............
回复

使用道具 举报

魔焰男孩 发表于 2005-8-3 09:10:02 | 显示全部楼层
天啊,楼主真厉害啊,都一点了还在写插件……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:15 , Processed in 0.026110 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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