uchome登陆状态以及session分析

2013-01-08 22:21 来源:www.chinab4c.com 作者:uchome专家

    uchome登陆状态以及session分析,这个问题是十分值得研究的。因为我们知道严格来说uchome他是没有session的。所以这个问题直接要牵涉到uchome的核心内容。当我们登陆了uchome的时候。其实他是结合了session表以及cookie来实现登陆状态的判断的。首先我们看下function checkauth()函数。

    @list($password, $uid) = explode("\t", authcode($_SCOOKIE['auth'], 'DECODE')).

    $_SGLOBAL['supe_uid'] = intval($uid);

    $password && $_SGLOBAL['supe_uid']

    $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('session')." WHERE uid='$_SGLOBAL[supe_uid]'");
            if($member = $_SGLOBAL['db']->fetch_array($query)) {
                if($member['password'] == $password) {
                    $_SGLOBAL['supe_username'] = addslashes($member['username']);
                    $_SGLOBAL['session'] = $member;
                } else {
                    $_SGLOBAL['supe_uid'] = 0;
                }
      }

    然后通过member检索。是否存在session。如果在session里面,我们就可以直接判断是登陆的。如果session过期了,就通过cookie去取数据,然后通过uid去取member。

    $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('member')." WHERE uid='$_SGLOBAL[supe_uid]'");
                if($member = $_SGLOBAL['db']->fetch_array($query)) {
                    if($member['password'] == $password) {
                        $_SGLOBAL['supe_username'] = addslashes($member['username']);
                        $session = array('uid' => $_SGLOBAL['supe_uid'], 'username' => $_SGLOBAL['supe_username'], 'password' => $password);
                        include_once(S_ROOT.'./source/function_space.php');
                        insertsession($session);//登录
                    } else {
                        $_SGLOBAL['supe_uid'] = 0;
                    }
                } else {
                    $_SGLOBAL['supe_uid'] = 0;
                }

    通过这个处理,他就保存了session。

    怪不得uchome没有session。其实他就是用cookie来处理的。

    来源:http:.//www.chinab4c.com