我在看discuz论坛的源码中过程中,发现用户登陆后,他的用户名称是存在sessions表里,在输出用户名称时用的是$discuz_user变量来出的!但是我没找到这个变量在哪个地方被初始化和赋值的,我用Dw搜索全部代码也没发现,望哪位给我说说。

解决方案 »

  1.   

    不明白,我输用所有的cookie也没有,另外还输出了它的一些系统数组也还是没有。
      

  2.   

    印象中是extract($_DSESSION)来的,common.inc.php,很久没看过它的代码
      

  3.   

    放到谷歌里面找下 :$discuz_user site:discuzdeveloper.googlecode.com/svn/trunk/Discuz!
      

  4.   

    在discuz代码根目录logging.php文件中: 可以看看这一段:$discuz_user = $discuz_pw = $discuz_secques = '';
    $member = array(); if($ucresult['uid'] > 0) { $member = $db->fetch_first("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
    m.email, m.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible
    FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
    WHERE m.uid='$ucresult[uid]'"); if(!$member) {
    $ucresult['username'] = addslashes($ucresult['username']);
    $auth = authcode("$ucresult[username]\t".FORMHASH."\t$ucresult[uid]", 'ENCODE');//ZRQ_01 这里添加一个参数UID
    if($inajax) {
    $message = 2;
    $location = $regname.'?action=activation&auth='.rawurlencode($auth);
    include template('login');
    } else {
    showmessage('login_activation', $regname.'?action=activation&auth='.rawurlencode($auth));
    }
    } extract($member); $discuz_userss = $discuz_user;
    $discuz_user = addslashes($discuz_user);
    关键的地方都改成了红色!把从数据库查询出来的$member数组变量,通过extract($member)(重点了解下这个函数)注入到环境中,
    key值discuz_user就成了环境变量($discuz_user),值就是m.username。
      

  5.   

    从数据库里取的啊从数据库中取 m.username AS discuz_user,存入->$_DSESSION
    最后导入符号表  @extract($_DSESSION);
      

  6.   

    在 include/common.inc.php 初始化数据的时候有的