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的构造函数做一个详细介绍。

时间: 2024-12-12 16:00:43

Ucenter源码解析--frame.php的相关文章

Ucenter源码解析之——index.php

1:安装好ucenter之后,进入Ucenter,如果在浏览器地址栏上输入ucenter域名,默认加载index.php,如果不带任何参数输入域名,将跳到根目录的admin.php.我们可以看代码 $m.$a是index.php和admin.php接收的参数.$m代码着将要实例化的类,$a代码着将要调用的method.比如,$m=user,$a=login.则会加载/control/user.php,$m=new usercontrol(),$m->onlogin(); 接下来是引入释放版本的m

Ucenter源码解析之——admin.php

上一篇,我们讲到了Ucenter的index.php接收到m,a为空参数的时候,会直接跳到admin.php,这个是/目录下的admin.php.先看前面的代码. 先关闭错误提示和magic_quotes_runtime,如果启用了 magic_quotes_runtime,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号.记录当前时间,这个和后面的记录结束时间是为了debug用的.后面会具体解释.然后定义了Ucenter的物理路径,Ucenter所在服务器IP,和/da

源码解析:dialog, popupwindow, 和activity 的第一个view是怎么来的?

问题 在慢慢熟悉android 的过程中,发现一个view 或者layout的初始化,或者构造的流程还是比较清楚的,也就是加到父控件中,然后就开始了对应的生命周期.但是整个界面的父控件,或者说系统的第一个view, 是怎么来的,如何初始化和绘制的呢? 概述 概述:带着困扰我的问题,在前文的基础上,继续分析应用界面和framework的关系,通过分析viewrootimpl 的来源,并结合dialog, popupwindow, 和activity 的 根view的创建流程,回答了问题界面的根vi

智能聊天机器人实现(源码+解析)

前言: 之前写了一篇  <美女图片采集器 (源码+解析)> 得到了众多朋友的支持, 发现这样系列的教程还是挺受欢迎的, 也激励我继续写下去. 也在那一篇文章中提过, 美女图片采集只是我先前那个完整APP中的一个功能罢了, 还有其他几个比较好玩的尚未开源, 之后有时间会逐一写篇教程. 今天带来的是智能聊天机器人实现(源码+解析), 和上一篇教程一样, 当你没有女朋友的时候, 可以用它来打发时间.这里的API是图灵机器人提供的, 实现一个十分强大的机器人. 具体功能包括: ? 支持聊天对话.智能问

Android的ViewDragHelper源码解析

其实我想看的是DrawerLayout, 但发现DrawerLayout里面是使用了ViewDragHelper去实现. 谷歌比较早就放出这个类了,但ViewDragHelper是开发中很少用到一个类.顾名思义这是一个和拖曳触摸有关的类. 本着追根溯源的想法, 加上ViewDragHelper的源码也不算多,就决定将ViewDragHelper的源码看一遍.对实现原理了解下. 代码一千多行,看完还是需要点时间的. 因此不会逐一讲完, 当然下面也会放出该类源码的解析,注释中也有一些个人理解的点写在

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析 我们平时使用App的时候, 经常在第一次使用的时候, 会有类似"新手教程"之类的东西, 来引导我们应该如何使用这个App. 但是这个"新手教程"不同于常规的引导页(引导页指第一次打开App时候, 弹出的那种介绍视图. 他是静态的, 不需要与用户交互, 可以直接一页页翻, 或者直接跳过.)所谓的"新手教程", 就是按照App的提示, 一步步跟着完成. 那这个"新手教程"

jQuery源码解析(架构与依赖模块)第一章 理解架构

1-1 jQuery设计理念 引用百科的介绍: jQuery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器.jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用).events.实现动画效果,并且方便地为网站提供AJAX交互.jQuery还有一个比较大的优势是,它

美女图片采集器 (源码+解析)

前言: 有一段时间没写博客了, "持之以恒"徽章都暗了, 实在不该. 前一段确实比较忙, ...小小地给自己的懒找个借口吧. 大二即将结束, 学习iOS也有一段时间了.今天抽点时间, 开源一个前几天刚上传的App里面的一个功能, RT, 美女图片采集器.   美女.. 相信没有人不喜欢吧, 基于此, 这个小Demo应运而生. 效果演示: 看到这里, 如果还有兴趣学习的话, 可以先到我的git中下载源码, 然后配合着源码看我下面的解析.相信, 会让你有所收获的. git下载链接: Bea

ChrisRenke/DrawerArrowDrawable源码解析

转载请注明出处http://blog.csdn.net/crazy__chen/article/details/46334843 源码下载地址http://download.csdn.net/detail/kangaroo835127729/8765757 这次解析的控件DrawerArrowDrawable是一款侧拉抽屉效果的控件,在很多应用上我们都可以看到(例如知乎),控件的github地址为https://github.com/ChrisRenke/DrawerArrowDrawable