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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] discuz 变态功能:隐藏代执行账号

[复制链接]
bqridt 发表于 2014-4-7 18:52:55 | 显示全部楼层 |阅读模式
本帖最后由 bqridt 于 2014-4-7 22:25 编辑

适用于大量采集,无需大量注册,使用本站现有账号代替;
直接代替指定账号回贴;代码很简单,我用的dx2,其他版本自己根据思路修改;

回贴文件:source\include\post\post_newreply.php
关键代码:

if($_G[uid]==2) //如果当前UID为我用来代执行的的UID
{
if(!empty($_GET["uaid"])&&is_numeric($_GET["uaid"])) //获取当前是否有指定uid传入
{
//如果有指定的用户则获取当前用户的信息;并存入变量uuid,uuname
$uuid=$_GET["uaid"];
DB::query("UPDATE cangssa_common_member_count SET posts=posts+2,extcredits2=extcredits2+3 where uid='$uuid'");
$query = DB::query("select username FROM cangssa_ucenter_members where uid='$uuid'");
if($query= DB::fetch($query))
$uuname=$query['username'];
}else{ //如果没有指定的UID则随机获取一个用户信息
while(1){   //因为我网站上被禁止的用户一般直接删除,所以我用无限循环以防没有获取到用户
$uuid=rand(1239,1772); //指定随机范围
$query = DB::query("select username FROM cangssa_common_member where uid='$uuid'");  //获取用户账号
if($query= DB::fetch($query)){ //如果有数据则存入uuname,并跳出,否则再次循环获取
$uuname=$query['username'];
break;
}
}

}


}else{ //如果不为代执行账号则将当前用户的uid和username存入uuid,uuname
$uuid=$_G['uid'];
$uuname=$_G['username'];
}


将此文件中的uid与username换成uuid,uuname;
完整代码:搜索“111”来找已经修改的username位置,uid用批量替换_G[uid],$_G['uid']这二个变量换成$uuid
  1. <?php

  2. /**
  3. *      [Discuz!] (C)2001-2099 Comsenz Inc.
  4. *      This is NOT a freeware, use is subject to license terms
  5. *
  6. *      $Id: post_newreply.php 23960 2011-08-17 10:45:16Z zhengqingpeng $
  7. */

  8. if(!defined('IN_DISCUZ')) {
  9.         exit('Access Denied');
  10. }

  11. require_once libfile('function/forumlist');
  12. if($_G[uid]==2)
  13. {
  14. if(!empty($_GET["uaid"])&&is_numeric($_GET["uaid"]))
  15. {
  16. $uuid=$_GET["uaid"];

  17. DB::query("UPDATE cangssa_common_member_count SET posts=posts+2,extcredits2=extcredits2+3 where uid='$uuid'");

  18. $query = DB::query("select username FROM cangssa_ucenter_members where uid='$uuid'");
  19. if($query= DB::fetch($query))
  20. $uuname=$query['username'];

  21. }else{

  22. while(1){
  23. $uuid=rand(1239,1772);
  24. $query = DB::query("select username FROM cangssa_common_member where uid='$uuid'");
  25. if($query= DB::fetch($query)){
  26. $uuname=$query['username'];
  27. break;
  28. }
  29. }

  30. }


  31. }else{
  32. $uuid=$_G['uid'];
  33. $uuname=$_G['username'];
  34. }


  35. $isfirstpost = 0;
  36. $showthreadsorts = 0;
  37. $quotemessage = '';

  38. if($special == 5) {
  39.         $debate = array_merge($thread, DB::fetch_first("SELECT * FROM ".DB::table('forum_debate')." WHERE tid='$_G[tid]'"));
  40.         $standquery = DB::query("SELECT stand FROM ".DB::table('forum_debatepost')." WHERE tid='$_G[tid]' AND uid='$uuid' AND stand>'0' ORDER BY dateline LIMIT 1");
  41.         $firststand = DB::result_first("SELECT stand FROM ".DB::table('forum_debatepost')." WHERE tid='$_G[tid]' AND uid='$uuid' AND stand>'0' ORDER BY dateline LIMIT 1");
  42.         $stand = $firststand ? $firststand : intval($_G['gp_stand']);

  43.         if($debate['endtime'] && $debate['endtime'] < TIMESTAMP) {
  44.                 showmessage('debate_end');
  45.         }
  46. }

  47. if(!$uuid && !((!$_G['forum']['replyperm'] && $_G['group']['allowreply']) || ($_G['forum']['replyperm'] && forumperm($_G['forum']['replyperm'])))) {
  48.         showmessage('replyperm_login_nopermission', NULL, array(), array('login' => 1));
  49. } elseif(empty($_G['forum']['allowreply'])) {
  50.         if(!$_G['forum']['replyperm'] && !$_G['group']['allowreply']) {
  51.                 showmessage('replyperm_none_nopermission', NULL, array(), array('login' => 1));
  52.         } elseif($_G['forum']['replyperm'] && !forumperm($_G['forum']['replyperm'])) {
  53.                 showmessagenoperm('replyperm', $_G['forum']['fid']);
  54.         }
  55. } elseif($_G['forum']['allowreply'] == -1) {
  56.         showmessage('post_forum_newreply_nopermission', NULL);
  57. }

  58. if(!$uuid && ($_G['setting']['need_avatar'] || $_G['setting']['need_email'] || $_G['setting']['need_friendnum'])) {
  59.         showmessage('replyperm_login_nopermission', NULL, array(), array('login' => 1));
  60. }

  61. if(empty($thread)) {
  62.         showmessage('thread_nonexistence');
  63. } elseif($thread['price'] > 0 && $thread['special'] == 0 && !$uuid) {
  64.         showmessage('group_nopermission', NULL, array('grouptitle' => $_G['group']['grouptitle']), array('login' => 1));
  65. }

  66. checklowerlimit('reply', 0, 1, $_G['forum']['fid']);

  67. if($_G['setting']['commentnumber'] && !empty($_G['gp_comment'])) {
  68.         $posttable = getposttablebytid($_G['tid']);
  69.         if(!submitcheck('commentsubmit', 0, $seccodecheck, $secqaacheck)) {
  70.                 showmessage('submitcheck_error', NULL);
  71.         }
  72.         $post = DB::fetch_first('SELECT * FROM '.DB::table($posttable)." WHERE pid='$_G[gp_pid]'");
  73.         if(!$post) {
  74.                 showmessage('post_nonexistence', NULL);
  75.         }
  76.         if($thread['closed'] && !$_G['forum']['ismoderator'] && !$thread['isgroup']) {
  77.                 showmessage('post_thread_closed');
  78.         } elseif(!$thread['isgroup'] && $post_autoclose = checkautoclose($thread)) {
  79.                 showmessage($post_autoclose, '', array('autoclose' => $_G['forum']['autoclose']));
  80.         } elseif(checkflood()) {
  81.                 showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
  82.         } elseif(checkmaxpostsperhour()) {
  83.                 showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
  84.         }
  85.         $commentscore = '';
  86.         if(!empty($_G['gp_commentitem']) && !empty($uuid) && $post['authorid'] != $uuid) {
  87.                 foreach($_G['gp_commentitem'] as $itemk => $itemv) {
  88.                         if($itemv !== '') {
  89.                                 $commentscore .= strip_tags(trim($itemk)).': <i>'.intval($itemv).'</i> ';
  90.                         }
  91.                 }
  92.         }
  93.         $comment = cutstr(($commentscore ? $commentscore.'<br />' : '').censor(trim(htmlspecialchars($_G['gp_message'])), '***'), 200, ' ');
  94.         if(!$comment) {
  95.                 showmessage('post_sm_isnull');
  96.         }//uuname
  97.         DB::insert('forum_postcomment', array(
  98.                 'tid' => $post['tid'],
  99.                 'pid' => $post['pid'],
  100.                 'author' => $uuname,
  101.                 'authorid' => $uuid,
  102.                 'dateline' => TIMESTAMP,
  103.                 'comment' => $comment,
  104.                 'score' => $commentscore ? 1 : 0,
  105.                 'useip' => $_G['clientip'],
  106.         ));
  107.         DB::update($posttable, array('comment' => 1), "pid='$_G[gp_pid]'");
  108.         !empty($uuid) && updatepostcredits('+', $uuid, 'reply', $_G['fid']);
  109.         if(!empty($uuid) && $uuid != $post['authorid']) {
  110.                 notification_add($post['authorid'], 'pcomment', 'comment_add', array(
  111.                         'tid' => $_G['tid'],
  112.                         'pid' => $_G['gp_pid'],
  113.                         'subject' => $thread['subject'],
  114.                         'commentmsg' => cutstr(str_replace(array('[b]', '[/b]', '[/color]'), '', preg_replace("/\[color=([#\w]+?)\]/i", "", stripslashes($comment))), 200)
  115.                 ));
  116.         }
  117.         if($_G['setting']['heatthread']['type'] == 2) {
  118.                 update_threadpartake($post['tid']);
  119.         }
  120.         $pcid = DB::result_first("SELECT id FROM ".DB::table('forum_postcomment')." WHERE pid='$_G[gp_pid]' AND authorid='-1'");
  121.         if(!empty($uuid) && $_G['gp_commentitem']) {
  122.                 $query = DB::query('SELECT comment FROM '.DB::table('forum_postcomment')." WHERE pid='$_G[gp_pid]' AND score='1'");
  123.                 $totalcomment = array();
  124.                 while($comment = DB::fetch($query)) {
  125.                         $comment['comment'] = addslashes($comment['comment']);
  126.                         if(strexists($comment['comment'], '<br />')) {
  127.                                 if(preg_match_all("/([^:]+?):\s<i>(\d+)<\/i>/", $comment['comment'], $a)) {
  128.                                         foreach($a[1] as $k => $itemk) {
  129.                                                 $totalcomment[trim($itemk)][] = $a[2][$k];
  130.                                         }
  131.                                 }
  132.                         }
  133.                 }
  134.                 $totalv = '';
  135.                 foreach($totalcomment as $itemk => $itemv) {
  136.                         $totalv .= strip_tags(trim($itemk)).': <i>'.(floatval(sprintf('%1.1f', array_sum($itemv) / count($itemv)))).'</i> ';
  137.                 }

  138.                 if($pcid) {
  139.                         DB::update('forum_postcomment', array('comment' => $totalv, 'dateline' => TIMESTAMP + 1), "id='$pcid'");
  140.                 } else {
  141.                         DB::insert('forum_postcomment', array(
  142.                                 'tid' => $post['tid'],
  143.                                 'pid' => $post['pid'],
  144.                                 'author' => '',
  145.                                 'authorid' => '-1',
  146.                                 'dateline' => TIMESTAMP + 1,
  147.                                 'comment' => $totalv
  148.                         ));
  149.                 }
  150.         }
  151.         DB::update('forum_postcomment', array('dateline' => TIMESTAMP + 1), "id='$pcid'");
  152.         showmessage('comment_add_succeed', "forum.php?mod=viewthread&tid=$post[tid]&pid=$post[pid]&page=$_G[gp_page]&extra=$extra#pid$post[pid]", array('tid' => $post['tid'], 'pid' => $post['pid']));
  153. }
  154. if($special == 127) {
  155.         $posttable = getposttablebytid($_G['tid']);
  156.         $postinfo = DB::fetch_first("SELECT message FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND first='1'");
  157.         $sppos = strrpos($postinfo['message'], chr(0).chr(0).chr(0));
  158.         $specialextra = substr($postinfo['message'], $sppos + 3);
  159. }

  160. if(!submitcheck('replysubmit', 0, $seccodecheck, $secqaacheck)) {

  161.         if($thread['special'] == 2 && ((!isset($_G['gp_addtrade']) || $thread['authorid'] != $uuid) && !$tradenum = DB::result_first("SELECT count(*) FROM ".DB::table('forum_trade')." WHERE tid='$_G[tid]'"))) {
  162.                 showmessage('trade_newreply_nopermission', NULL);
  163.         }

  164.         $language = lang('forum/misc');
  165.         $noticeauthor = $noticetrimstr = '';
  166.         if(isset($_G['gp_repquote']) && $_G['gp_repquote'] = intval($_G['gp_repquote'])) {
  167.                 $posttable = getposttablebytid($_G['tid']);
  168.                 $thaquote = DB::fetch_first("SELECT tid, fid, author, authorid, first, message, useip, dateline, anonymous, status FROM ".DB::table($posttable)." WHERE pid='$_G[gp_repquote]' AND (invisible='0' OR (authorid='$uuid' AND invisible='-2'))");
  169.                 if($thaquote['tid'] != $_G['tid']) {
  170.                         showmessage('reply_quotepost_error', NULL);
  171.                 }

  172.                 if(getstatus($thread['status'], 2) && $thaquote['authorid'] != $uuid && $uuid != $thread['authorid'] && $thaquote['first'] != 1 && !$_G['forum']['ismoderator']) {
  173.                         showmessage('reply_quotepost_error', NULL);
  174.                 }

  175.                 if(!($thread['price'] && !$thread['special'] && $thaquote['first'])) {
  176.                         $quotefid = $thaquote['fid'];
  177.                         $message = $thaquote['message'];

  178.                         if($_G['setting']['bannedmessages'] && $thaquote['authorid']) {
  179.                                 $author = DB::fetch_first("SELECT groupid FROM ".DB::table('common_member')." WHERE uid='$thaquote[authorid]'");
  180.                                 if(!$author['groupid'] || $author['groupid'] == 4 || $author['groupid'] == 5) {
  181.                                         $message = $language['post_banned'];
  182.                                 } elseif($thaquote['status'] & 1) {
  183.                                         $message = $language['post_single_banned'];
  184.                                 }
  185.                         }

  186.                         $time = dgmdate($thaquote['dateline']);
  187.                         $message = messagecutstr($message, 100);
  188.                         $message = implode("\n", array_slice(explode("\n", $message), 0, 3));

  189.                         $thaquote['useip'] = substr($thaquote['useip'], 0, strrpos($thaquote['useip'], '.')).'.x';
  190.                         if($thaquote['author'] && $thaquote['anonymous']) {
  191.                                 $thaquote['author'] = lang('forum/misc', 'anonymoususer');
  192.                         } elseif(!$thaquote['author']) {
  193.                                 $thaquote['author'] = lang('forum/misc', 'guestuser').' '.$thaquote['useip'];
  194.                         } else {
  195.                                 $thaquote['author'] = $thaquote['author'];
  196.                         }

  197.                         $post_reply_quote = lang('forum/misc', 'post_reply_quote', array('author' => $thaquote['author'], 'time' => $time));
  198.                         $noticeauthormsg = htmlspecialchars($message);
  199.                         if(!defined('IN_MOBILE')) {
  200.                                 $message = "[quote][size=2][color=#999999]{$post_reply_quote}[/color] [img]static/image/common/back.gif[/img][/size]\n{$message}[/quote]";
  201.                         } else {
  202.                                 $message = "[quote][color=#999999]{$post_reply_quote}[/color]\n[color=#999999]{$message}[/color][/quote]";
  203.                         }
  204.                         $quotemessage = discuzcode($message, 0, 0);
  205.                         $noticeauthor = htmlspecialchars(authcode('q|'.$thaquote['authorid'], 'ENCODE'));
  206.                         $noticetrimstr = htmlspecialchars($message);
  207.                         $message = '';
  208.                 }
  209.                 $reppid = $_G['gp_repquote'];

  210.         } elseif(isset($_G['gp_reppost']) && $_G['gp_reppost'] = intval($_G['gp_reppost'])) {
  211.                 $posttable = getposttablebytid($_G['tid']);
  212.                 $thapost = DB::fetch_first("SELECT tid, author, authorid, useip, dateline, anonymous, status, message FROM ".DB::table($posttable)." WHERE pid='$_G[gp_reppost]' AND (invisible='0' OR (authorid='$uuid' AND invisible='-2'))");

  213.                 if($thapost['tid'] != $_G['tid']) {
  214.                         showmessage('targetpost_donotbelongto_thisthread', NULL);
  215.                 }

  216.                 $thapost['useip'] = substr($thapost['useip'], 0, strrpos($thapost['useip'], '.')).'.x';
  217.                 if($thapost['author'] && $thapost['anonymous']) {
  218.                         $thapost['author'] = '[color=Olive]'.lang('forum/misc', 'anonymoususer').'[/color]';
  219.                 } elseif(!$thapost['author']) {
  220.                         $thapost['author'] = '[color=Olive]'.lang('forum/misc', 'guestuser').'[/color] '.$thapost['useip'];
  221.                 } else {
  222.                         $thapost['author'] = '[color=Olive]'.$thapost['author'].'[/color]';
  223.                 }
  224.                 $posttable = getposttablebytid($thapost['tid']);
  225.                 $quotemessage = discuzcode($message, 0, 0);
  226.                 $noticeauthormsg = htmlspecialchars(messagecutstr($thapost['message'], 100));
  227.                 $noticeauthor = htmlspecialchars(authcode('r|'.$thapost['authorid'], 'ENCODE'));
  228.                 $noticetrimstr = htmlspecialchars($message);
  229.                 $message = '';
  230.                 $reppid = $_G['gp_reppost'];
  231.         }

  232.         if(isset($_G['gp_addtrade']) && $thread['special'] == 2 && $_G['group']['allowposttrade'] && $thread['authorid'] == $uuid) {
  233.                 $expiration_7days = date('Y-m-d', TIMESTAMP + 86400 * 7);
  234.                 $expiration_14days = date('Y-m-d', TIMESTAMP + 86400 * 14);
  235.                 $trade['expiration'] = $expiration_month = date('Y-m-d', mktime(0, 0, 0, date('m')+1, date('d'), date('Y')));
  236.                 $expiration_3months = date('Y-m-d', mktime(0, 0, 0, date('m')+3, date('d'), date('Y')));
  237.                 $expiration_halfyear = date('Y-m-d', mktime(0, 0, 0, date('m')+6, date('d'), date('Y')));
  238.                 $expiration_year = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y')+1));
  239.         }

  240.         if($thread['replies'] <= $_G['ppp']) {
  241.                 $postlist = array();
  242.                 $posttable = getposttablebytid($_G['tid']);
  243.                 $query = DB::query("SELECT p.* ".($_G['setting']['bannedmessages'] ? ', m.groupid ' : '').
  244.                         "FROM ".DB::table($posttable)." p ".($_G['setting']['bannedmessages'] ? "LEFT JOIN ".DB::table('common_member')." m ON p.authorid=m.uid " : '').
  245.                         "WHERE p.tid='$_G[tid]' AND p.invisible='0' ".($thread['price'] > 0 && $thread['special'] == 0 ? 'AND p.first = 0' : '')." ORDER BY p.dateline DESC");
  246.                 while($post = DB::fetch($query)) {

  247.                         $post['dateline'] = dgmdate($post['dateline'], 'u');

  248.                         if($_G['setting']['bannedmessages'] && ($post['authorid'] && (!$post['groupid'] || $post['groupid'] == 4 || $post['groupid'] == 5))) {
  249.                                 $post['message'] = $language['post_banned'];
  250.                         } elseif($post['status'] & 1) {
  251.                                 $post['message'] = $language['post_single_banned'];
  252.                         } else {
  253.                                 $post['message'] = preg_replace("/\[hide=?\d*\](.*?)\[\/hide\]/is", "[b]$language[post_hidden][/b]", $post['message']);
  254.                                 $post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'] & 1, $_G['forum']['allowsmilies'], $_G['forum']['allowbbcode'], $_G['forum']['allowimgcode'], $_G['forum']['allowhtml'], $_G['forum']['jammer']);
  255.                         }

  256.                         $postlist[] = $post;
  257.                 }
  258.         }

  259.         if($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) {
  260.                 $attachlist = getattach(0);
  261.                 $attachs = $attachlist['attachs'];
  262.                 $imgattachs = $attachlist['imgattachs'];
  263.                 unset($attachlist);
  264.         }

  265.         getgpc('infloat') ? include template('forum/post_infloat') : include template('forum/post');

  266. } else {

  267.         if(trim($subject) == '' && trim($message) == '' && $thread['special'] != 2) {
  268.                 showmessage('post_sm_isnull');
  269.         } elseif($thread['closed'] && !$_G['forum']['ismoderator'] && !$thread['isgroup']) {
  270.                 showmessage('post_thread_closed');
  271.         } elseif(!$thread['isgroup'] && $post_autoclose = checkautoclose($thread)) {
  272.                 showmessage($post_autoclose, '', array('autoclose' => $_G['forum']['autoclose']));
  273.         } elseif($post_invalid = checkpost($subject, $message, $special == 2 && $_G['group']['allowposttrade'])) {
  274.                 showmessage($post_invalid, '', array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize']));
  275.         } elseif(checkflood()) {
  276.                 showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
  277.         } elseif(checkmaxpostsperhour()) {
  278.                 showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
  279.         }
  280.         if(!empty($_G['gp_trade']) && $thread['special'] == 2 && $_G['group']['allowposttrade']) {

  281.                 $item_price = floatval($_G['gp_item_price']);
  282.                 $item_credit = intval($_G['gp_item_credit']);
  283.                 if(!trim($_G['gp_item_name'])) {
  284.                         showmessage('trade_please_name');
  285.                 } elseif($_G['group']['maxtradeprice'] && $item_price > 0 && ($_G['group']['mintradeprice'] > $item_price || $_G['group']['maxtradeprice'] < $item_price)) {
  286.                         showmessage('trade_price_between', '', array('mintradeprice' => $_G['group']['mintradeprice'], 'maxtradeprice' => $_G['group']['maxtradeprice']));
  287.                 } elseif($_G['group']['maxtradeprice'] && $item_credit > 0 && ($_G['group']['mintradeprice'] > $item_credit || $_G['group']['maxtradeprice'] < $item_credit)) {
  288.                         showmessage('trade_credit_between', '', array('mintradeprice' => $_G['group']['mintradeprice'], 'maxtradeprice' => $_G['group']['maxtradeprice']));
  289.                 } elseif(!$_G['group']['maxtradeprice'] && $item_price > 0 && $_G['group']['mintradeprice'] > $item_price) {
  290.                         showmessage('trade_price_more_than', '', array('mintradeprice' => $_G['group']['mintradeprice']));
  291.                 } elseif(!$_G['group']['maxtradeprice'] && $item_credit > 0 && $_G['group']['mintradeprice'] > $item_credit) {
  292.                         showmessage('trade_credit_more_than', '', array('mintradeprice' => $_G['group']['mintradeprice']));
  293.                 } elseif($item_price <= 0 && $item_credit <= 0) {
  294.                         showmessage('trade_pricecredit_need');
  295.                 } elseif($_G['gp_item_number'] < 1) {
  296.                         showmessage('tread_please_number');
  297.                 }

  298.         }

  299.         $attentionon = empty($_G['gp_attention_add']) ? 0 : 1;
  300.         $attentionoff = empty($attention_remove) ? 0 : 1;

  301.         if($thread['lastposter'] != $_G['member']['username'] && $uuid) {
  302.                 if($_G['setting']['heatthread']['type'] == 1 && $_G['setting']['heatthread']['reply']) {
  303.                         $posttable = getposttablebytid($_G['tid']);
  304.                         $userreplies = DB::result_first("SELECT COUNT(*) FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND first='0' AND authorid='$uuid'");
  305.                         $thread['heats'] += round($_G['setting']['heatthread']['reply'] * pow(0.8, $userreplies));
  306.                         DB::query("UPDATE ".DB::table('forum_thread')." SET heats='$thread[heats]' WHERE tid='$_G[tid]'", 'UNBUFFERED');
  307.                 } elseif($_G['setting']['heatthread']['type'] == 2) {
  308.                         update_threadpartake($_G['tid']);
  309.                 }
  310.         }

  311.         $bbcodeoff = checkbbcodes($message, !empty($_G['gp_bbcodeoff']));
  312.         $smileyoff = checksmilies($message, !empty($_G['gp_smileyoff']));
  313.         $parseurloff = !empty($_G['gp_parseurloff']);
  314.         $htmlon = $_G['group']['allowhtml'] && !empty($_G['gp_htmlon']) ? 1 : 0;
  315.         $usesig = !empty($_G['gp_usesig']) ? 1 : ($uuid && $_G['group']['maxsigsize'] ? 1 : 0);

  316.         $isanonymous = $_G['group']['allowanonymous'] && !empty($_G['gp_isanonymous'])? 1 : 0;
  317.         $author = empty($isanonymous) ? $_G['username'] : '';

  318.         $pinvisible = $modnewreplies ? -2 : ($thread['displayorder'] == -4 ? -3 : 0);
  319.         $message = preg_replace('/\[attachimg\](\d+)\[\/attachimg\]/is', '[attach]\1[/attach]', $message);
  320.         $postcomment = in_array(2, $_G['setting']['allowpostcomment']) && $_G['group']['allowcommentreply'] && !$pinvisible && !empty($_G['gp_reppid']) && ($nauthorid != $uuid || $_G['setting']['commentpostself']) ? messagecutstr($message, 200, ' ') : '';

  321.         if(!empty($_G['gp_noticetrimstr'])) {
  322.                 $message = $_G['gp_noticetrimstr']."\n\n".$message;
  323.                 $bbcodeoff = false;
  324.         }
  325. //uuname
  326.         $pid = insertpost(array(
  327.                 'fid' => $_G['fid'],
  328.                 'tid' => $_G['tid'],
  329.                 'first' => '0',
  330.                 'author' => $uuname,
  331.                 'authorid' => $uuid,
  332.                 'subject' => $subject,
  333.                 'dateline' => $_G['timestamp'],
  334.                 'message' => $message,
  335.                 'useip' => $_G['clientip'],
  336.                 'invisible' => $pinvisible,
  337.                 'anonymous' => $isanonymous,
  338.                 'usesig' => $usesig,
  339.                 'htmlon' => $htmlon,
  340.                 'bbcodeoff' => $bbcodeoff,
  341.                 'smileyoff' => $smileyoff,
  342.                 'parseurloff' => $parseurloff,
  343.                 'attachment' => '0',
  344.                 'status' => (defined('IN_MOBILE') ? 8 : 0),
  345.         ));

  346.         if($pid && getstatus($thread['status'], 1)) {
  347.                 $postionid = savepostposition($_G['tid'], $pid, true);
  348.         }
  349.         if(getstatus($thread['status'], 3) && $postionid) {
  350.                 $rushstopfloor = DB::result_first("SELECT stopfloor FROM ".DB::table('forum_threadrush')." WHERE tid = '$_G[tid]'");
  351.                 if($rushstopfloor > 0 && $thread['closed'] == 0 && $postionid >= $rushstopfloor) {
  352.                         DB::query("UPDATE ".DB::table('forum_thread')." SET closed='1' WHERE tid='$_G[tid]'");
  353.                 }
  354.         }
  355.         useractionlog($uuid, 'pid');

  356.         $nauthorid = 0;
  357.         if(!empty($_G['gp_noticeauthor']) && !$isanonymous && !$modnewreplies) {
  358.                 list($ac, $nauthorid) = explode('|', authcode($_G['gp_noticeauthor'], 'DECODE'));
  359.                 if($nauthorid != $uuid) {
  360.                         if($ac == 'q') {
  361.                                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array(
  362.                                         'tid' => $thread['tid'],
  363.                                         'subject' => $thread['subject'],
  364.                                         'fid' => $_G['fid'],
  365.                                         'pid' => $pid,
  366.                                 ));
  367.                         } elseif($ac == 'r') {
  368.                                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array(
  369.                                         'tid' => $thread['tid'],
  370.                                         'subject' => $thread['subject'],
  371.                                         'fid' => $_G['fid'],
  372.                                         'pid' => $pid,
  373.                                         'from_id' => $thread['tid'],
  374.                                         'from_idtype' => 'post',
  375.                                 ));
  376.                         }
  377.                 }

  378.                 if($postcomment) {
  379.                         $rpid = intval($_G['gp_reppid']);
  380.                         if(!$posttable) {
  381.                                 $posttable = getposttablebytid($thread['tid']);
  382.                         }
  383.                         if($rpost = DB::fetch_first("SELECT first FROM ".DB::table($posttable)." WHERE pid='$rpid'")) {
  384.                                 if(!$rpost['first']) {//111uuname
  385.                                         DB::insert('forum_postcomment', array(
  386.                                                 'tid' => $thread['tid'],
  387.                                                 'pid' => $rpid,
  388.                                                 'rpid' => $pid,
  389.                                                 'author' => $uuname,
  390.                                                 'authorid' => $uuid,
  391.                                                 'dateline' => TIMESTAMP,
  392.                                                 'comment' => $postcomment,
  393.                                                 'score' => 0,
  394.                                                 'useip' => $_G['clientip'],
  395.                                         ));
  396.                                         DB::update($posttable, array('comment' => 1), "pid='$rpid'");
  397.                                 }
  398.                         }
  399.                         unset($postcomment);
  400.                 }
  401.         }

  402.         if($thread['authorid'] != $uuid && getstatus($thread['status'], 6) && empty($_G['gp_noticeauthor']) && !$isanonymous && !$modnewreplies) {
  403.                 $posttable = getposttablebytid($_G['tid']);
  404.                 $thapost = DB::fetch_first("SELECT tid, author, authorid, useip, dateline, anonymous, status, message FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND first='1' AND invisible='0'");
  405.                 notification_add($thapost['authorid'], 'post', 'reppost_noticeauthor', array(
  406.                         'tid' => $thread['tid'],
  407.                         'subject' => $thread['subject'],
  408.                         'fid' => $_G['fid'],
  409.                         'pid' => $pid,
  410.                         'from_id' => $thread['tid'],
  411.                         'from_idtype' => 'post',
  412.                 ));
  413.         }

  414.         if($thread['replycredit'] > 0 && $thread['authorid'] != $uuid && $uuid) {

  415.                 $replycredit_rule = DB::fetch_first("SELECT * FROM ".DB::table('forum_replycredit')." WHERE tid = '$_G[tid]' LIMIT 1");
  416.                 if(!empty($replycredit_rule['times'])) {
  417.                         $have_replycredit = DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_credit_log')." WHERE relatedid = '{$_G[tid]}' AND uid = '{$uuid}' AND operation = 'RCA' LIMIT {$replycredit_rule['times']} ");
  418.                         if($replycredit_rule['membertimes'] - $have_replycredit > 0 && $thread['replycredit'] - $replycredit_rule['extcredits'] >= 0) {
  419.                                 $replycredit_rule['extcreditstype'] = $replycredit_rule['extcreditstype'] ? $replycredit_rule['extcreditstype'] : $_G['setting']['creditstransextra'][10];
  420.                                 if($replycredit_rule['random'] > 0) {
  421.                                         $rand = rand(1, 100);
  422.                                         $rand_replycredit = $rand <= $replycredit_rule['random'] ? true : false ;
  423.                                 } else {
  424.                                         $rand_replycredit = true;
  425.                                 }
  426.                                 if($rand_replycredit) {
  427.                                         if(!$posttable) {
  428.                                                 $posttable = getposttablebytid($_G['tid']);
  429.                                         }
  430.                                         updatemembercount($uuid, array($replycredit_rule['extcreditstype'] => $replycredit_rule['extcredits']), 1, 'RCA', $_G[tid]);
  431.                                         DB::update($posttable, array('replycredit' => $replycredit_rule['extcredits']), array('pid' => $pid));
  432.                                         DB::update("forum_thread", array('replycredit' => $thread['replycredit'] - $replycredit_rule['extcredits']), array('tid' => $_G[tid]));
  433.                                 }
  434.                         }
  435.                 }
  436.         }

  437.         if($special == 5) {

  438.                 if(!DB::num_rows($standquery)) {
  439.                         if($stand == 1) {
  440.                                 DB::query("UPDATE ".DB::table('forum_debate')." SET affirmdebaters=affirmdebaters+1 WHERE tid='$_G[tid]'");
  441.                         } elseif($stand == 2) {
  442.                                 DB::query("UPDATE ".DB::table('forum_debate')." SET negadebaters=negadebaters+1 WHERE tid='$_G[tid]'");
  443.                         }
  444.                 } else {
  445.                         $stand = $firststand;
  446.                 }
  447.                 if($stand == 1) {
  448.                         DB::query("UPDATE ".DB::table('forum_debate')." SET affirmreplies=affirmreplies+1 WHERE tid='$_G[tid]'");
  449.                 } elseif($stand == 2) {
  450.                         DB::query("UPDATE ".DB::table('forum_debate')." SET negareplies=negareplies+1 WHERE tid='$_G[tid]'");
  451.                 }
  452.                 DB::query("INSERT INTO ".DB::table('forum_debatepost')." (tid, pid, uid, dateline, stand, voters, voterids) VALUES ('$_G[tid]', '$pid', '$uuid', '$_G[timestamp]', '$stand', '0', '')");
  453.         }

  454.         ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $special == 2 && $_G['gp_tradeaid']) && updateattach($thread['displayorder'] == -4 || $modnewreplies, $_G['tid'], $pid, $_G['gp_attachnew']);

  455.         $replymessage = 'post_reply_succeed';
  456.         if($special == 2 && $_G['group']['allowposttrade'] && $thread['authorid'] == $uuid && !empty($_G['gp_trade']) && !empty($_G['gp_item_name'])) {

  457.                 require_once libfile('function/trade');
  458.                 trade_create(array(
  459.                         'tid' => $_G['tid'],
  460.                         'pid' => $pid,
  461.                         'aid' => $_G['gp_tradeaid'],
  462.                         'item_expiration' => $_G['gp_item_expiration'],
  463.                         'thread' => $thread,
  464.                         'discuz_uid' => $uuid,
  465.                         'author' => $author,
  466.                         'seller' => empty($_G['gp_paymethod']) && $_G['gp_seller'] ? dhtmlspecialchars(trim($_G['gp_seller'])) : '',
  467.                         'item_name' => $_G['gp_item_name'],
  468.                         'item_price' => $_G['gp_item_price'],
  469.                         'item_number' => $_G['gp_item_number'],
  470.                         'item_quality' => $_G['gp_item_quality'],
  471.                         'item_locus' => $_G['gp_item_locus'],
  472.                         'transport' => $_G['gp_transport'],
  473.                         'postage_mail' => $_G['gp_postage_mail'],
  474.                         'postage_express' => $_G['gp_postage_express'],
  475.                         'postage_ems' => $_G['gp_postage_ems'],
  476.                         'item_type' => $_G['gp_item_type'],
  477.                         'item_costprice' => $_G['gp_item_costprice'],
  478.                         'item_credit' => $_G['gp_item_credit'],
  479.                         'item_costcredit' => $_G['gp_item_costcredit']
  480.                 ));

  481.                 $replymessage = 'trade_add_succeed';
  482.                 if(!empty($_G['gp_tradeaid'])) {
  483.                         convertunusedattach($_G['gp_tradeaid'], $_G['tid'], $pid);
  484.                 }

  485.         }

  486.         if($specialextra) {

  487.                 @include_once DISCUZ_ROOT.'./source/plugin/'.$_G['setting']['threadplugins'][$specialextra]['module'].'.class.php';
  488.                 $classname = 'threadplugin_'.$specialextra;
  489.                 if(class_exists($classname) && method_exists($threadpluginclass = new $classname, 'newreply_submit_end')) {
  490.                         $threadpluginclass->newreply_submit_end($_G['fid'], $_G['tid']);
  491.                 }

  492.         }

  493.         $_G['forum']['threadcaches'] && deletethreadcaches($_G['tid']);

  494.         include_once libfile('function/stat');
  495.         updatestat($thread['isgroup'] ? 'grouppost' : 'post');

  496.         $param = array('fid' => $_G['fid'], 'tid' => $_G['tid'], 'pid' => $pid, 'from' => $_G['gp_from'], 'sechash' => !empty($_G['gp_sechash']) ? $_G['gp_sechash'] : '');

  497.         dsetcookie('clearUserdata', 'forum');

  498.         if($modnewreplies) {
  499.                 updatemoderate('pid', $pid);
  500.                 unset($param['pid']);
  501.                 DB::query("UPDATE ".DB::table('forum_forum')." SET todayposts=todayposts+1, modworks='1' WHERE fid='$_G[fid]'", 'UNBUFFERED');
  502.                 $url = empty($_POST['portal_referer']) ? ("forum.php?mod=viewthread&tid={$thread[tid]}") :  $_POST['portal_referer'];
  503.                 manage_addnotify('verifypost');
  504.                 if(!isset($inspacecpshare)) {
  505.                         showmessage('post_reply_mod_succeed', $url, $param);
  506.                 }
  507.         } else {
  508.                 $lastpostsql = $thread['lastpost'] < $_G['timestamp'] ? "lastpost='$_G[timestamp]'," : '';
  509.                 DB::query("UPDATE ".DB::table('forum_thread')." SET lastposter='$uuname', $lastpostsql replies=replies+1 WHERE tid='$_G[tid]'", 'UNBUFFERED');
  510. //uuname
  511.                 if($thread['displayorder'] != -4) {
  512.                         updatepostcredits('+', $uuid, 'reply', $_G['fid']);
  513.                         if($_G['forum']['status'] == 3) {
  514.                                 if($_G['forum']['closed'] > 1) {
  515.                                         DB::query("UPDATE ".DB::table('forum_thread')." SET lastposter='$author', $lastpostsql replies=replies+1 WHERE tid='".$_G['forum']['closed']."'", 'UNBUFFERED');
  516.                                 }
  517.                                 DB::query("UPDATE ".DB::table('forum_groupuser')." SET replies=replies+1, lastupdate='".TIMESTAMP."' WHERE uid='$uuid' AND fid='$_G[fid]'");
  518.                                 updateactivity($_G['fid'], 0);
  519.                                 require_once libfile('function/grouplog');
  520.                                 updategroupcreditlog($_G['fid'], $uuid);
  521.                         }

  522.                         $lastpost = "$thread[tid]\t".addslashes($thread['subject'])."\t$_G[timestamp]\t$author";
  523.                         DB::query("UPDATE ".DB::table('forum_forum')." SET lastpost='$lastpost', posts=posts+1, todayposts=todayposts+1 WHERE fid='$_G[fid]'", 'UNBUFFERED');
  524.                         if($_G['forum']['type'] == 'sub') {
  525.                                 DB::query("UPDATE ".DB::table('forum_forum')." SET lastpost='$lastpost' WHERE fid='".$_G['forum']['fup']."'", 'UNBUFFERED');
  526.                         }
  527.                 }

  528.                 $feed = array();
  529.                 if(!isset($_G['gp_addfeed'])) {
  530.                         $space = array();
  531.                         space_merge($space, 'field_home');
  532.                         $_G['gp_addfeed'] = $space['privacy']['feed']['newreply'];
  533.                 }
  534.                 if(!empty($_G['gp_addfeed']) && $_G['forum']['allowfeed'] && !$isanonymous) {
  535.                         if($special == 2 && !empty($_G['gp_trade'])) {
  536.                                 $feed['icon'] = 'goods';
  537.                                 $feed['title_template'] = 'feed_thread_goods_title';
  538.                                 if($_G['gp_item_price'] > 0) {
  539.                                         if($_G['setting']['creditstransextra'][5] != -1 && $_G['gp_item_credit']) {
  540.                                                 $feed['body_template'] = 'feed_thread_goods_message_1';
  541.                                         } else {
  542.                                                 $feed['body_template'] = 'feed_thread_goods_message_2';
  543.                                         }
  544.                                 } else {
  545.                                         $feed['body_template'] = 'feed_thread_goods_message_3';
  546.                                 }
  547.                                 $feed['body_data'] = array(
  548.                                         'itemname'=> "<a href="forum.php?mod=viewthread&do=tradeinfo&tid=$_G[tid]&pid=$pid">$_G[gp_item_name]</a>",
  549.                                         'itemprice'=> $_G['gp_item_price'],
  550.                                         'itemcredit'=> $_G['gp_item_credit'],
  551.                                         'creditunit'=> $_G['setting']['extcredits'][$_G['setting']['creditstransextra'][5]]['unit'].$_G['setting']['extcredits'][$_G['setting']['creditstransextra'][5]]['title'],
  552.                                 );
  553.                                 if($_G['gp_tradeaid']) {
  554.                                         $feed['images'] = array(getforumimg($_G['gp_tradeaid']));
  555.                                         $feed['image_links'] = array("forum.php?mod=viewthread&do=tradeinfo&tid=$_G[tid]&pid=$pid");
  556.                                 }
  557.                         } elseif($special == 3 && $thread['authorid'] != $uuid) {
  558.                                 $feed['icon'] = 'reward';
  559.                                 $feed['title_template'] = 'feed_reply_reward_title';
  560.                                 $feed['title_data'] = array(
  561.                                         'subject' => "<a href="forum.php?mod=viewthread&tid=$_G[tid]">$thread[subject]</a>",
  562.                                         'author' => "<a href="home.php?mod=space&uid=$thread[authorid]">$thread[author]</a>"
  563.                                 );
  564.                         } elseif($special == 5 && $thread['authorid'] != $uuid) {
  565.                                 $feed['icon'] = 'debate';
  566.                                 if($stand == 1) {
  567.                                         $feed['title_template'] = 'feed_thread_debatevote_title_1';
  568.                                 } elseif($stand == 2) {
  569.                                         $feed['title_template'] = 'feed_thread_debatevote_title_2';
  570.                                 } else {
  571.                                         $feed['title_template'] = 'feed_thread_debatevote_title_3';
  572.                                 }
  573.                                 $feed['title_data'] = array(
  574.                                         'subject' => "<a href="forum.php?mod=viewthread&tid=$_G[tid]">$thread[subject]</a>",
  575.                                         'author' => "<a href="home.php?mod=space&uid=$thread[authorid]">$thread[author]</a>"
  576.                                 );
  577.                         } elseif($thread['authorid'] != $uuid) {
  578.                                 $post_url = "forum.php?mod=redirect&goto=findpost&pid=$pid&ptid=$_G[tid]";

  579.                                 $feed['icon'] = 'post';
  580.                                 $feed['title_template'] = !empty($thread['author']) ? 'feed_reply_title' : 'feed_reply_title_anonymous';
  581.                                 $feed['title_data'] = array(
  582.                                         'subject' => "<a href="$post_url">$thread[subject]</a>",
  583.                                         'author' => "<a href="home.php?mod=space&uid=$thread[authorid]">$thread[author]</a>"
  584.                                 );
  585.                                 if(!empty($_G['forum_attachexist'])) {
  586.                                         $firstaid = DB::result_first("SELECT aid FROM ".DB::table(getattachtablebytid($_G['tid']))." WHERE pid='$pid' AND dateline>'0' AND isimage='1' ORDER BY dateline LIMIT 1");
  587.                                         if($firstaid) {
  588.                                                 $feed['images'] = array(getforumimg($firstaid));
  589.                                                 $feed['image_links'] = array($post_url);
  590.                                         }
  591.                                 }
  592.                         }
  593.                         $feed['title_data']['hash_data'] = "tid{$_G[tid]}";
  594.                         $feed['id'] = $pid;
  595.                         $feed['idtype'] = 'pid';
  596.                         if($feed['icon']) {
  597.                                 postfeed($feed);
  598.                         }
  599.                 }

  600.                 $page = getstatus($thread['status'], 4) ? 1 : @ceil(($thread['special'] ? $thread['replies'] + 1 : $thread['replies'] + 2) / $_G['ppp']);

  601.                 if($special == 2 && !empty($_G['gp_continueadd'])) {
  602.                         dheader("location: forum.php?mod=post&action=reply&fid={$_G[forum][fid]}&firstpid=$pid&tid={$thread[tid]}&addtrade=yes");
  603.                 } else {
  604.                         $url = empty($_POST['portal_referer']) ? "forum.php?mod=viewthread&tid={$thread[tid]}&pid=$pid&page=$page&extra=$extra#pid$pid" : $_POST['portal_referer'];
  605.                 }
  606.                 if(!isset($inspacecpshare)) {
  607.                         showmessage($replymessage, $url, $param);
  608.                 }
  609.         }

  610. }

  611. ?>
复制代码


然后在内容页输出数据模板:viewthread_node.html,输出贴子和用户数据的地方,加入以下代码:
<!--{if $_G[uid]==2}--> //你的代执行账号uid
                                        <a target="_blank" href="forum.php?mod=post&action=reply&fid=$_G[fid]&tid=$_G[tid]&uaid=$post[authorid]">模拟</a>
<!--{/if}-->

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

本版积分规则

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

GMT+8, 2024-11-17 11:23 , Processed in 0.200691 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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