dede cookie.helper.php,织梦DEDE中cookie和session的应用

织梦DEDE中用到了cookie和session,在织梦DEDE后台用的是session,在会员管理软件首页用的是cookie,前台和后台用到的验证码是通过session来达成验证的,大家先从DEDE后台开始剖析,织梦DEDE系统中的session的应用。 当大家打开后台,通过抓取头文件,如下图所示。

通过上图大家可以看到,已经创建了一个session 文件。大家剖析一下织梦DEDE从打开后缀到登录,程序都实行了哪些操作。 当大家打开后台http://localhost/dede后,系统找到index.php文件,然后,在这个文件中引入后台配置文件config.php,在这个配置文件里引入了“管理员登陆类”,这个类里面的第一句就session_start(),并且在配置文件里接着包含了common.inc.php文件,直接把验证码类也引入,同时,验证码初始化,大家打开验证码类看一下,你会发目前验证码初始化后,同时把验证码存入cookie中,这就是为何在这个类中常常看到session_start()的影子。接着在配置文件中运行里面的程序,当运行到下面的代码:

$cuserLogin = new userLogin();

if($cuserLogin->getUserID()==-1)

{

header("location:login.php?gotopage=".urlencode($dedeNowurl));

exit();

} 这句是用来判断用户是不是已经登录了,假如没有登录,则转到location里面的路径。大家打开类文件userlogin.class.php,可以找到办法getUserID(),这个办法是用来判断用户id是不是存在,若存在,则返回这个id,否则返回-1。由于没有登录,所以,程序会自动路出config.php,并转到http://localhost/dede/login.php?gotopage=%2F织梦DEDE%2Fdede%2F这里,即后台登录界面,程序也就转到了login.php文件,这个文件正是处置用户提交的用户名和密码,还有验证码的。 这个login.php对应的模板文件是login.htm,就是大家看到的界面,当大家写上用户名、密码和验证码后,点提交,这些数据将被提交到login.php文件,在62行大家看到代码if($dopost=='login'),用来处置当提交了后,难证用户名、密码和验证码的。 应该注意的是:大家在做这样的类似的用户验证功能时,最好先验证一下验证码,由于验证码是通过cookie来达成验证的,而用户名和密码则要查看数据库,假如验证码不正确,白白查看数据库,浪费资源。织梦DEDE也是这样做的,先通过函数GetCkVdValue()来验证,然后,再通过checkUser($userid,$pwd)办法进行验证。 其中GetCkVdValue()在“系统核心函数存放文件”common.inc.php里面,在这个文件的最后,大家就可以找到。checkUser($userid,$pwd)办法在“管理员登陆类”类文件userlogin.class.php里面约240行,假如用户名和密码正确,则返回1,否则返回-1。 若用户名正确,则实行下面的这段代码: //success

if($res==1)

{

$cuserLogin->keepUser();

if(!empty($gotopage))

{

ShowMsg('成功登录,正在转向管理管理主页!',$gotopage);

exit();

}

else

{

ShowMsg('成功登录,正在转向管理管理主页!',"index.php");

exit();

}

} 这段代码尤为重要,特别是$cuserLogin->keepUser();这个办法的调用,这办法是为了“维持用户的会话状况”,也是把用户的信息,写到cookie里面的要紧办法,只有实行了这个办法,才能使在大家再打开浏览器一个选项卡,再打开后台,可以不需要登录直接进行网站后台。 这也是下一次打开后台路径后,在config.php里面进行判断用户是不是已经登录,也就是getUserID()是不是等于-1,即if($cuserLogin->getUserID()==-1)的要紧依据。 回过头来大家再看一下,上面这段代码中的$cuserLogin->keepUser();这句是怎么样达成把cookie写入到session文件中的。$cuserLogin->keepUser()这个办法在文件类userlogin.class.php里面的第281行开始处。要读懂这个文件,还要打开common.inc.php打到如下代码。 这里在大于php5.4以上的版本的首要条件下概念了三个函数,分别是创建session值的函数session_register(),判断是不是已经设置了session值的函数session_is_registered()和销毁session的函数,session_unregister()。这样无论你的php版本无论是哪一个,都可以用函数session_register()了,织梦DEDE帮大家想的很周到! 回到函数keepUser()里面,在函数里面不仅创建了大量session,例如$_SESSION[$this->keepUserIDTag] = $this->userID;还创建了cookie, PutCookie('DedeUserID', $this->userID, 3600 * 24, '/');

PutCookie('DedeLoginTime', time(), 3600 * 24, '/'); 通过这二个函数创建了cookie,这二个函数在cookie小助手cookie.helper.php里面概念的。 当登录成功,程序直接调用模板index2.htm,进入后台后,大家刚进入后台看到的界面就是这个模板文件。 概括:当大家在地址栏输入http://localhost/dede/按回车后,程序会打开http://localhost/dede/index.php文件,程序会从这个index.php第一进入到config.php里面,当实行代码,实行到

$cuserLogin = new userLogin();

if($cuserLogin->getUserID()==-1) 若你没有登录过,则转到login.php?gotopage=%2F织梦DEDE%2Fdede%2F界面,这个时候程序已经跳出config.php,而且此时,程序并没有回到index.php文件里,由于,通过exit()跳到了login.php文件里了。当输入的用户名、密码和验证码通过验证后,程序又跳转到index.php界面,即进入了后台。 若已经登录,又打开浏览器标签,程序依然会进入到index.php里面,然后,进入到config.php里面,此时getUserID()的值不是-1,这是由于刚登录后,程序已经通过session保存在服务器里了,所以,就不会跳转到login.php页面了,而是直接向下运行,装载模板index2.htm,进入后台首页。 其它登录验证跟这个后台的验证类似,只是不像织梦DEDE这么复杂而已。(责任编辑:酱油妹)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值