crx349 发表于 2024-3-27 13:54:15

Discuz! X 开发过程中常用函数或变量说明

本文为Discuz!x3 以上插件 模板 或 二次开发时,可能用到的系统函数 变量 说明,自用同时分享:

1.系统变量:
$_G;

使用:先声明
global $_G;

适用版本:X2.5-X3.5
技巧:
当前用户UID $uid =$_G['uid'];
用户组:
$vars=$_G['cache']['plugin']['xmspace'];//插件设置的 用户组多选选项
$agent_groups = (array)unserialize($vars['agent_groups']);//可用用户组
$group_id =$_G['groupid'];//当前用户用户组
if(in_array($group_id,$agent_groups ){//判断当前用户用户组是否可以使用
}




2.获取用户积分

$credits_id =1;//对应后台系统积分编号
$user_money = DB::fetch_first("SELECT `extcredits".$credits_id."` FROM ".DB::table('common_member_count')." WHERE uid=".$_G['uid']);
$credits = $user_money['extcredits'.$credits_id]

说明:获取当前登陆用户 积分id 为1的积分值

3.获取指定积分id 名称


$credits_id =1;
$title = $_G['setting']['extcredits'][$credits_id]['title']
说明:获取积分编号1 的名称

4.获取指定用户表信息(uid)


$name = "xmspace.net";
$user_info = DB::fetch_first("SELECT * FROM " . DB::table('common_member') . " WHERE username='" . $name. '\'');
说明:获取 用户名为xmspace.net 的 用户表信息

$uid = "1";
$user_info = DB::fetch_first("SELECT * FROM " . DB::table('common_member') . " WHERE uid='" . $uid . '\'');
说明:获取 uid为1 的 用户表信息

5.获取指定板块id 板块名称

$forum_id =1;
$forum_name = DB::result_first('SELECT name FROM %t where fid =%d',array('forum_forum',$forum_id));//关联群组
说明:获取 板块为1 的 板块名称

crx349 发表于 2025-7-28 12:08:03

当前登陆用户信息获取:
$_G['member']:用户名
$_G['member']:用户UID:
$_G['member']:邮箱地址
$_G['member']:经过MD5后的密码
$_G['member']:用户是否已经删除
$_G['member']:邮箱验证状态 0未验证 1验证通过
$_G['member']:头像上传状态 0未上传 1已上传
$_G['member']:视频认证 0未认证 1已认证
$_G['member']:所在管理组ID
$_G['member']:所在用户组ID
$_G['member']:所在用户组有效期
$_G['member']:扩展用户组
$_G['member']:注册时间
$_G['member']:214 现有总积分
$_G['member']:短消息声音
$_G['member']:所在时区
$_G['member']:新短消息数量
$_G['member']:新提醒数量
$_G['member']:访问权限
$_G['member']:是否拥有管理面板权限 0否 1是
$_G['member']:是否只接受好友短消息 0否 1是
$_G['member']:是否绑定QQ 0否 1是
$_G['member']:上次访问时间

crx349 发表于 2025-7-28 12:09:09

获取指定uid 用户信息:
include_once 'source/function/function_core.php';

$uid = 1; // 替换为目标用户的UID
$user = getuserbyuid($uid);

if ($user) {
echo "用户名: " . $user['username'];
} else {
echo "用户不存在";
}

crx349 发表于 2025-7-31 11:59:49

获取用户头像:
function avatar($uid, $size = 'small')
        {
                global $_G;
                $uid = sprintf("%09d", $uid);
                $dir1 = substr($uid, 0, 3);
                $dir2 = substr($uid, 3, 2);
                $dir3 = substr($uid, 5, 2);
                $ucenterurl = $_G['setting']['ucenterurl'];
                $file = $ucenterurl.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).'_avatar_'.$size.'.jpg';
                return '<img width="48" height="48" src="'.$file.'?t='.time().'" onerror="this.onerror=null;this.src=\''.$ucenterurl.'/images/noavatar_'.$size.'.gif\'" />';
        }

crx349 发表于 2025-7-31 12:06:49

注册用户:
loaducenter();
                $uid = uc_user_register(addslashes($newusername), $newpassword, $newemail, "", "", $_G["clientip"]);

crx349 发表于 2025-7-31 12:07:14

自动登陆:function xmspace_net_login($uid)
{
    global $_G;

    if (!($member = getuserbyuid($uid, 1))) {
      return false;
    }

    /*if (!( $member=DB::fetch_first("SELECT * FROM ".DB::table('common_member')." WHERE uid=".$uid))) {
      return false;
    }*/

    if (isset($member['_inarchive'])) {
      C::t('common_member_archive')->move_to_master($member['uid']);
    }
    require_once libfile('function/member');
    $cookietime = 0;
    setloginstatus($member, $cookietime);

    include_once libfile('function/stat');
    updatestat('register');

    require_once libfile('cache/userstats', 'function');
    build_cache_userstats();


    return true;
}

crx349 发表于 2025-8-1 10:44:27

//随机email
function xmspace_net_rand_email($email)
{
    $arr = explode("@",$email);
    $p = $arr;
    $e = $arr;
    $charset = array(
      "a","b","c","d","e","f","g","h","i","j","k","l","m",
      "n","o","p","q","r","s","t","u","v","w","x","y","z",
      "0","1","2","3","4","5","6","7","8","9"
    );
    $len = count($charset);
    $res = "";
    shuffle($charset);
    for ($i=0; $i<2; ++$i) {
      $rn = mt_rand(0,$len-1);
      $char = $charset[$rn];
      $charset[$rn] = $charset[$len-1];
      --$len;
      if (!is_numeric($char)) {
            $seed = mt_rand(0,1);
            if ($seed == 0) $char = strtoupper($char);
      }
      $res.= $char;
    }
    return "$p$res@$e";
}
页: [1]
查看完整版本: Discuz! X 开发过程中常用函数或变量说明