[纯属转载]ECmall源码简略分析三(用户登陆与退出)

2016-07-07 16:48 来源:www.chinab4c.com 作者:ecshop专家

在includes/ecapp.base.php中定义了一个BaseVisitor extends Object 类,它对session中的当前登录的用户信息进行判断与初使化,我们先看看它的构造器:
  1. function BaseVisitor()
  2. {
  3. if ($_SESSION[$this->_info_key]['user_id'])
  4. {
  5. $this->info= $_SESSION[$this->_info_key];
  6. $this->has_login = true;
  7. }
  8. else
  9. {
  10. $this->info= array(
  11. 'user_id'=> 0,
  12. 'user_name' => Lang::get('guest')
  13. );
  14. $this->has_login = false;
  15. }
  16. }
复制代码
它在构造器中就对$_SESSION中进行_info_key的判断,判断是否存在,存在则用户已经登录,不存在,则用户还没有登录
而这里的_info_key,则是在它的子类:UserVisitor extends BaseVisitor中进行附值的:
  1. class UserVisitor extends BaseVisitor
  2. {
  3. var $_info_key = 'user_info';
  4. }
复制代码
这个子类,在FrontendApp extends ECBaseApp类中的:
  1. function _init_visitor()
  2. {
  3. $this->visitor =& env('visitor', new UserVisitor());
  4. }
复制代码
中对visitor进行初使化的。因此这就可以让我们在FrontendApp的子类中使用$this->visitor->get("user_id")就可以获取当前登录用户的信息,而根据ecmall的继承图中我们可以知道,基本在所有的实体对象操作类中都可以使用它对当前登录用户进行访问!而在BaseVisitor类中,集合了更多的函数可以对用户是否登录,获取当前用户信息等内容进行操作。
而对于系统后台的用户操作,与前台是一样的,只不过后台是:admin/app/backend.base.php中的BackendApp类!


回答:
读了就顶起



从哪转这么些好文章哦

顶起。有帮助。

不错,多学学

ecmall的继承图,哪位可以系统的画出来看下?

不错的学习一下

学习 学习了

后台 在第一次装入的时候 是如何判断用户没有登录并跳转到登录页面的

同标题~~~项二次开发,还得自己慢慢研究代码

顶起。有帮助。