Ucenter源码解析--frame.php

/control/admin/frame.php的流程结构类似于这样:/control/admin/frame.php -->调用父类adminbase的构造函数,(/model/adminbase的实例)-->adminbase类的构造函数,调用父类base类的构造函数(/model/base.php),真正干活的是base类的构造函数,所以,我们直接看base类的构造函数都实现了什么。

//构造函数
function __construct() {
$this->base();
}
//base函数
function base() {
//调用内部函数,
$this->init_var();
//初始化数据库和连接数据库信息
$this->init_db();
//引入//data/cache下面的文件,并加载全部的应用信息
$this->init_cache();
//初始化所用的应用ID
$this->init_app();
//初始化用户信息
$this->init_user();
$this->init_template();
//发送通知函数
$this->init_note();
$this->init_mail();
//$this->cron();
}

可以看到,base干的话有:

  • 初始化成员变量onlineip,lang
  • 建立数据库连接
  • 将需要的数据表中的信息写到/data/cache对应的文件,可以说,你在/data/cache/目录下面看到的内容都是对应的表格中的数据,这样以来就可以提高代码效率。不需要重复读写数据库
  • 从上一步中的/data/cache/apps.php文件中读取对应的appid内容
  • 读取浏览器的cookie,使用/data/cache/apps.php文件中读取出对应appid的密钥,解密cookie,然后解出userid,username
  • 设置默认主题
  • 使用fsock()向各个应用发生通知
  • 发生email

这个是base的构造函数的功能,adminbase类调用完父类的构造函数,就会执行页面的加载,我们可以看代码:

function adminbase() {

//调用父类的构造函数

parent::__construct();

$this->cookie_status = isset($_COOKIE[‘sid‘]) ? 1 : 0;

$sid = $this->cookie_status ? getgpc(‘sid‘, ‘C‘) : rawurlencode(getgpc(‘sid‘, ‘R‘));

$this->view->sid = $sid;

$this->view->assign(‘sid‘, $this->view->sid);

$this->view->assign(‘iframe‘, getgpc(‘iframe‘));

$a = getgpc(‘a‘);

if(getgpc(‘m‘) !=‘user‘ && $a != ‘login‘ && $a != ‘logout‘) {

$this->check_priv();

}

}

执行了父类的构造函数,就会执行自己的check_priv(),check_prive()的函数代码如下 :

$username = $this->sid_decode($this->view->sid);

if(empty($username)) {

header(‘Location: ‘.UC_API.‘/admin.php?m=user&a=login&iframe=‘.getgpc(‘iframe‘, ‘G‘).($this->cookie_status ? ‘‘ : ‘&sid=‘.$this->view->sid));
exit;

这是部分代码,所以,第一次进ucenter出现 的登陆界面,就是这个函数实现。我们看地址栏的url:http://ucenter.xadieu.com/admin.php?m=user&a=login&iframe=&sid=

是不是一样的。所以,我们看到了登陆界面。下一篇,我们会对base.php的构造函数做一个详细介绍。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。