对discuz的代码分析学习(二)首页文件
如果当前地址栏存在查询字符,并且是一个数字,条件成立。
查询字符:www.baidu.com/index.php?aaa=bbb aaa=bbb就是查询字符
如果条件成立,则把home赋值给$_ENV['curapp'] ; $_ENV可以理解为类似于$_GET的超全局数组。这里的$_ENV['curapp']可以理解为选中的入口文件。
并将一个数组传递给$_GET,数组的第一个成员指定了控制器名称,第二个成员制定了一个叫uid的参数,就是用户id。
如果这里的条件成立了,127行的IF语句必定为false,下面一大堆代码都不用执行,一直跳到137行,直接就加载入口文件。
如果第一个IF语句为false
cache_domain.php是系统生成的配置文件。$domain数组是在cache_domain.php文件中声明的。
如果$_ENV['domain']为空,直接将当前选中的应用设置为forum(论坛) ,然后跳到137行。
如果 $_ENV['domain']不为空
25:将当前主机域名按.号拆分为数组。
27:将获取到的域名从第一个.号后一位的位置截取,一直截取到末尾。例如www.baidu.com -> 被截之后 -> baidu.com
28:如果['domain']['app']不为空,并且是数组,并且当前访问的域名也是其数组值的一项。则:
30:在app数组中找到值为当前域名的键,作为选中的应用。比如当前访问的域名为www.baidu.com而且在app数组中找到了这一项:
那么$_ENV['curapp']的值就为home。
如果当前选中的应用是mobile(手机) ,$_ENV['curapp']重置为forum
如果当前选中的应用是default或者当前选中的应用在默认应用数组中不存在,则把当前选中的应用赋值为空。
37:这个条件会在设置根域名,并且当前访问的也是这个根域名之后成立。
44:这一行的条件不知道什么情况下会成立。搞了好几遍list数组始终为空。下面的IF语句也不会执行,暂时不清楚list数组干嘛用的。
74:如果当前访问的域名是二级域名,并且这个二级域名不是保留域名,这个条件就会成立,checkholdmain函数用来检查是否是保留域名。
75:获取域名前缀
76:获取根域名
77:加载框架入口文件
这一串代码看得出来是初始化操作。这些都是discuz_application类的属性。
85:这行代码会通过table_common_domain类查询数据库,找到根域名绑定的应用类型。fetch_by_domain_domainroot
如果应用类型为home如何如何,如果应用类型为group如何如何。
大致分析
对discuz的代码分析学习(二)首页文件的更多相关文章
- 对discuz的代码分析学习(一)目录结构
主目录 DISCUZ用的是自己的框架,和其他框架应用一样属于单入口应用.主目录下的.php文件,大部分是应用的入口文件. home.php:家园入口,即论坛中类似博客的那个东西.index.php:首 ...
- 对discuz的代码分析学习(四)论坛入口文件
只是大致分析下执行流程,主要就是取得mod参数的值,根据取值加载控制器,控制器位置在最后一行指定了. 1 )定义应用名称,加载两个必要文件 define('APPTYPEID', 2); define ...
- 对discuz的代码分析学习(三)mysql驱动
一. 属性分析 1.tablepre :表名称前缀 2.version : 数据库版本 3.drivertype:驱动类型 4.querynu ...
- 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录
原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...
- dedecms代码研究二
dedecms代码研究(2)从index开始现在继续,今天讲的主要是dedecms的入口代码.先打开index.PHP看看里面是什么吧.打开根目录下的index.php嗯映入眼帘的是一个if语句.检查 ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- [置顶]
几行代码实现ofo首页小黄人眼睛加速感应转动
最新版的ofo 小黄车的首页小黄人眼睛随重力而转动,感觉有点炫酷,学习一下吧,以下代码是在xamarin android下实现 ofo首页效果图: xamarin android实现效果: 实现思路: ...
- Servlet总结二(文件路径)
Servlet总结二(文件路径) 前言 前面我们说过ServletContext表示的是web容器中的上下文,下面我们也是用到ServletContext中的方法读取文件 读取WebRoot文件下的文 ...
- Discuz!X 3.4 前台任意文件删除漏洞复现
Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/artic ...
随机推荐
- 《think in python》学习-6
think in python 有返回函数 我们使用过的内置函数中,有一部分会返回结果,比如 math的 返回值 我们写一个有返回值的函数,计算给定半径的圆的面积,例如这个: def area(rad ...
- javascript 全选与反选
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...
- DataSetToList 和 DataTableTolist 转换
DataSetToList 及DataTableTolist经常使用,在此分享一下我的方法. DataSetToList 和 DataTableTolist 转换 DataSetToList 和 Da ...
- 定时器——Cocos2d-x学习历程(十一)
1.定时器 利用场景.层和精灵等游戏元素,我们可以构建游戏的框架,但是此时的游戏仍然是静止不动的.在一切游戏中,游戏的状态都会随着时间的流逝而改变,同时我们还需要定时进行一些逻辑判断,例如鱼和子弹的碰 ...
- 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 ...
- QF——OC中的SEL类型和Block
@selector(): 可以理解@selector()就是取类方法的编号,他的基本行为类似于C语言中的函数指针(指向函数的指针).它们通过传递方法的地址(或编号)来实现把方法当做参数的效果. 不过在 ...
- QF——OC内存管理详解
堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理.因为栈的内存会自动回收,堆的内存需要我们手动回收. 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中.因 ...
- window.showModalDialog的基本用法
window.showModalDialog的基本用法 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.show ...
- High Context とLow Context文化
社会の様々な文化を分類するのに.Low context culture, High context cultureという分け方がある.ビジネススクールのグローバル・マーケティングの授業などでよく取り上 ...
- DLR、ASTER GDEM、SRTM3、GMTED2010等5种全球高程数据对比
目前网上有多种全球高程数据,国内在这方面也进步喜人,资源三号目前已放出来的卫片给了不少惊喜,其高程数值得期待.但资源三号的高程数据放出来还需等待,过去两三年全球高程数据发展相当迅猛,DLR放出了相 ...