dedecms5.7原代码分析 用户验证和退出

用户的验证:

用户验证很简单,是根据/dede/config.php来完成的,和登录类似,new一个userLogin,然后获取其UserID,UserId为-1则用户未登录,

//检验用户登录状态
$cuserLogin = new userLogin();

if($cuserLogin->getUserID()==-1)
{
    if ( preg_match("#PHP (.*) Development Server#",$_SERVER['SERVER_SOFTWARE']) )
    {
        $dirname = dirname($_SERVER['SCRIPT_NAME']);
        header("location:{$dirname}/login.php?gotopage=".urlencode($dedeNowurl));
    } else {
        header("location:login.php?gotopage=".urlencode($dedeNowurl));
    }
    exit();
}

为什么要用-1个呢,这里是因为用户ID一般为数字,而且数据库的ID一般为无符号整数,从1开始,有人说了,为啥不从0开始了,这里就小涉及到很混乱的false判断问题了,所以干脆从-1开始了,这样大家都清楚,不至于混乱。

用户的退出:

用户的退出是由/dede/exti.php来实现的代码很短,就是销毁session变量,让用户退出。

require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
$cuserLogin = new userLogin();
$cuserLogin->exitUser();
if(empty($needclose))
{
    header('location:index.php');
}
else
{
    $msg = "<script language='javascript'>
    if(document.all) window.opener=true;
    window.close();
    </script>";
    echo $msg;
}
    function exitUser()
    {
        ClearMyAddon();
        @session_unregister($this->keepUserIDTag);
        @session_unregister($this->keepUserTypeTag);
        @session_unregister($this->keepUserChannelTag);
        @session_unregister($this->keepUserNameTag);
        @session_unregister($this->keepUserPurviewTag);
        DropCookie('dedeAdmindir');
        DropCookie('DedeUserID');
        DropCookie('DedeLoginTime');
        $_SESSION = array();
    }

说明:因为dedecms的开发有些年头了,PHP的版本比较低了,所以有些函数过期了或者有些用法不再可行了,比如说Session 的设置设置与销毁问题,新版本像session_register,session_unregister都没用了或者未定义了,用法都变了,但没关系,我们读的是思路,学的是想法。

取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!