zl程序教程

您现在的位置是:首页 >  后端

当前栏目

destoon 的登录过程,如何使用cookie来判断用户是否登录

Cookie 如何 用户 过程 判断 登录 是否 destoon
2023-09-27 14:24:59 时间
if($MOD[ passport ] == uc ) include DT_ROOT. /api/ .$MOD[ passport ]. .inc.php //7 line $do = new memb

第一部分是destoon 的登录过程

登录是使用member- login的函数来实现的login.inc.php

代码在login.inc.php这个文件中

 if($MOD[passport] == uc) include DT_ROOT./api/.$MOD[passport]..inc.php;

 //7 line

 $do = new member;

 //42 line

 $user = $do- login($username, $password, $cookietime);
member这个类在member.class.php中定义

 function login($login_username, $login_password, $login_cookietime = 0, $admin = false) {

 global $DT_TIME, $DT_IP, $MOD, $MODULE, $L;

........................

 $auth=encrypt($user[userid]."\t".$user[username]."\t".$user[groupid]."\t".$user[password]."\t".$user[admin], md5(DT_KEY.$DT_IP));

 set_cookie(auth, $auth, $cookietime);

 set_cookie(userid, $user[userid], $cookietime);

 set_cookie(username, $user[username], $DT_TIME + 86400*365);

 $this- db- query("UPDATE {$this- table_member} SET loginip=$DT_IP,logintime=$DT_TIME,logintimes=logintimes+1 WHERE userid=$userid");

 return $user;

 }
如果登录成后,那么给用户设置cookie,使用的set_cookie函数是在include/global.func.php中实现

function set_cookie($var, $value = , $time = 0) {

 global $CFG, $DT_TIME;

 $time = $time 0 ? $time : (empty($value) ? $DT_TIME - 3600 : 0);

 $port = $_SERVER[SERVER_PORT] == 443 ? 1 : 0;

 $var = $CFG[cookie_pre].$var;

 return setcookie($var, $value, $time, $CFG[cookie_path], $CFG[cookie_domain], $port);

}
如果说用js来判断是否登录,可以通过cookie来取得相应的值是否为空

在这里说明一下cookie是有前缀的,所以推荐使用系统带的取得cookie的函数 get_cookie



系统中原自带的处理判断用户是否登录是使用的以下函数,在footer.htm中

show_task({$destoon_task});

经过编译后会转化成

script type="text/javascript"
show_task(moduleid=1 html=index);

/script

show_task函数在page.js中实现,有兴趣的话,可以看一下,返回的是一段js代码,js模板在template/chip/line.htm中



Discuz! X3.5 登录不了管理后台的处理方法集合 1. 取消IP认证。由于Discuz!论坛会认证IP,不允许不同IP地址同时登录后台,所以取消IP认证即可。修改方法:在网站根目录,Discuz!配置文件config目录下config_global.php 中找到如下代码:$_config[‘admincp’][‘checkip’] = 1把代码中“1”改成“0”。(修改后允许多IP同时登录后台,所以论坛的安全系数会降低)
上两篇讲的无论是内部类的封装领域还是配置文件的认证源,这篇开始讲最关心的数据库作为境界的认证源 这里使用的是四郎给我们提供的另一个内置的类JdbcRealm这个是连接数据库的一个内部类,话不多说了,具体的代码如下: