Discuz教程网

[二次开发] Discuz X2利用http提交post,让论坛支持删除指定用户在uc其他论坛应用的信息

[复制链接]
authicon dly 发表于 2012-11-8 19:49:19 | 显示全部楼层 |阅读模式
//admincp_members.php
        //发送分论坛删除指定uids的信息
        $header_user_arr['uids_arr']  = $uids;
        $header_url = 'http://127.0.0.1/bbs2/delete_user_all.php';
        __header_post($header_user_arr,$header_url,$passwd=false);


//在admin.php文件增加一个function
//===========================function __header_post  odaboy_1219
/* 传送post数据到指定地址
* $uids:array(),$url:str,$passwd   
* $uids  =  array('1','2','3');
* __header_post($uids,'http://127.0.0.1/test/post_v2.php?odaboy=1',$passwd=false);
* admincp_members.php ;
*/
function __header_post($uids,$url=false,$passwd=false){
        if($url==false )exit("kong1 ");
        if(!is_array($uids))exit("kong ");
       
        if(is_array($uids))
        $data = http_build_query($uids);
       
/*  var_dump($data);
exit; */
       
        $context_options = array (
        'http' => array (
        'method' => 'POST',
        'header'=>  "Content-type: application/x-www-form-urlencoded\r\n",
        'content' => $data,
           'timeout' => 5,
                                        ),
        );
        $context = stream_context_create($context_options);
        $fp = fopen($url, 'r', false, $context);
fpassthru($fp);
        fclose($fp);
// exit;
}
//===========================function __header_post  odaboy_1219 End



下面是delete_use_all.php


/**
*      [Discuz!] (C)2001-2099 Comsenz Inc.
*      This is NOT a freeware, use is subject to license terms
*
*      $Id: delete_user_all.php 22172 2011-12-19 04:25:01Z odaboy $
*/

define('IN_ADMINCP', TRUE);
define('NOROBOT', TRUE);
define('ADMINSCRIPT', basename(__FILE__));
define('CURSCRIPT', 'admin');
define('HOOKTYPE', 'hookscript');
define('APPTYPEID', 0);


require './source/class/class_core.php';
require './source/function/function_forum.php';

$discuz = & discuz_core::instance();

$modarray = array('ajax','announcement','attachment','forumdisplay',
        'group','image','index','medal','misc','modcp','notice','post','redirect',
        'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag'
);

$modcachelist = array(
        'index'                => array('announcements', 'onlinelist', 'forumlinks',
                        'heats', 'historyposts', 'onlinerecord', 'userstats', 'diytemplatenameforum'),
        'forumdisplay'        => array('smilies', 'announcements_forum', 'globalstick', 'forums',
                        'onlinelist', 'forumstick', 'threadtable_info', 'threadtableids', 'stamps', 'diytemplatenameforum'),
        'viewthread'        => array('smilies', 'smileytypes', 'forums', 'usergroups',
                        'stamps', 'bbcodes', 'smilies',        'custominfo', 'groupicon', 'stamps',
                        'threadtableids', 'threadtable_info', 'posttable_info', 'diytemplatenameforum'),
        'redirect'        => array('threadtableids', 'threadtable_info', 'posttable_info'),
        'post'                => array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes',
                        'domainwhitelist'),
        'space'                => array('fields_required', 'fields_optional', 'custominfo'),
        'group'                => array('grouptype', 'diytemplatenamegroup'),
);

$mod = !in_array($discuz->var['mod'], $modarray) ? 'index' : $discuz->var['mod'];

define('CURMODULE', $mod);
$cachelist = array();
if(isset($modcachelist[CURMODULE])) {
        $cachelist = $modcachelist[CURMODULE];
}
if($discuz->var['mod'] == 'group') {
        $_G['basescript'] = 'group';
}

$discuz->cachelist = $cachelist;
$discuz->init();

/* echo  1;
var_dump($_POST[uids_arr]);
exit; */
// print_r($_POST[uids_arr]);
foreach($_POST[uids_arr] as $key=>$value){
        $_G['gp_uidarray'][$key] = intval($value);
}


$_G['gp_uidarray']  = is_array($_POST[uids_arr])? $_POST[uids_arr] : '0';



if(!empty($_G['gp_uidarray'])) {
        $uids = is_array($_G['gp_uidarray']) ? '\''.implode('\', \'', $_G['gp_uidarray']).'\'' : '0';
        $query = DB::query("SELECT uid, groupid, adminid FROM ".DB::table('common_member')." WHERE uid IN($uids) AND adminid<>1 AND groupid<>1");

        $membernum = DB::num_rows($query);
        $uids = array();
        while($member = DB::fetch($query)) {
                if($membernum < 2000 || !empty($_G['gp_uidarray'])) {
                        $extra .= '';
                }
                $uids[] = $member['uid'];
        }
}


if(empty($uids)) {
        // cpmsg('members_no_find_deluser', '', 'error');
        exit('uid=NULL');
}
$numdeleted = $numdeleted ? $numdeleted : count($_G['gp_uidarray']);
$pertask = 1000;
$current = $_G['gp_current'] ? intval($_G['gp_current']) : 0;
// $deleteitem = $_G['gp_deleteitem'] ? trim($_G['gp_deleteitem']) : 'post';
$nextdeleteitem = $deleteitem;
$next = $current + $pertask;
// if($deleteitem == 'post') { //删除post

        $threads = $fids = $threadsarray = array();
        $query = DB::query("SELECT f.fid, t.tid FROM ".DB::table('forum_thread')." t LEFT JOIN ".DB::table('forum_forum')." f ON t.fid=f.fid WHERE t.authorid IN (".dimplode($uids).") ORDER BY f.fid LIMIT $pertask");
        while($thread = DB::fetch($query)) {
                $threads[$thread['fid']][] = $thread['tid'];
        }

        if($threads) {
                require_once libfile('function/post');
                require_once libfile('function/delete');
               
                foreach($threads as $fid => $tids) {
                        deletethread($tids);
                        updateforumcount($fid);
                }
                if($_G['setting']['globalstick']) {
                        require_once libfile('function/cache');
                        updatecache('globalstick');
                }
        }
// }   //删除post  End
// if($deleteitem == 'blog') {  //删除blog
        $blogs = array();
        $query = DB::query("SELECT blogid FROM ".DB::table('home_blog')." WHERE uid IN (".dimplode($uids).") LIMIT $pertask");
        while($blog = DB::fetch($query)) {
                $blogs[] = $blog['blogid'];
        }

        if($blogs) {
                deleteblogs($blogs);
        }
// }  //  删除blog  End

// if($deleteitem == 'pic') {   //删除pic
        $pics = array();
        $query = DB::query("SELECT picid FROM ".DB::table('home_pic')." WHERE uid IN (".dimplode($uids).") LIMIT $pertask");
        while($pic = DB::fetch($query)) {
                $pics[] = $pic['picid'];
        }

        if($pics) {
                deletepics($pics);
        }
// }  //删除pic  End

// if($deleteitem == 'doing') {  //删除doing
        $doings = array();
        $query = DB::query("SELECT doid FROM ".DB::table('home_doing')." WHERE uid IN (".dimplode($uids).") LIMIT $pertask");
        while($doing = DB::fetch($query)) {
                $doings[] = $doing['doid'];
        }

        if($doings) {
                deletedoings($doings);
        }
// }   //删除doing End

// if($deleteitem == 'share') {  //删除share
        $shares = array();
        $query = DB::query("SELECT sid FROM ".DB::table('home_share')." WHERE uid IN (".dimplode($uids).") LIMIT $pertask");
        while($share = DB::fetch($query)) {
                $shares[] = $share['sid'];
        }

        if($shares) {
                deleteshares($shares);
        }
// }  //删除share  End

// if($deleteitem == 'comment') {  //删除comment
        $comments = array();
        $query = DB::query("SELECT cid FROM ".DB::table('home_comment')." WHERE uid IN (".dimplode($uids).") OR authorid IN (".dimplode($uids).") OR (id IN (".dimplode($uids).") AND idtype='uid') LIMIT $pertask");
        while($comment = DB::fetch($query)) {
                $comments[] = $comment['cid'];
        }

        if($comments) {
                deletecomments($comments);
        }
// }  //删除comment End



                               
?>



上一篇:模仿DISCUZ的单列模式链接mysql
下一篇:discuzX2表情导入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 01:42

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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