Ucenter源码解析之——admin.php
上一篇,我们讲到了Ucenter的index.php接收到m,a为空参数的时候,会直接跳到admin.php,这个是/目录下的admin.php.先看前面的代码。
先关闭错误提示和magic_quotes_runtime,如果启用了 magic_quotes_runtime
,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号。记录当前时间,这个和后面的记录结束时间是为了debug用的。后面会具体解释。然后定义了Ucenter的物理路径,Ucenter所在服务器IP,和/data/的物理路径、url路径、以及获取mgic_quotes_gpc的值。mgic_quotes_gpc的状态是开启还是关闭很重要,如果mgic_quotes_gpc是开启的,那么接收用户输入的敏感符号如单引号、双引号都会被转义。如果是关闭,那么就不会自动转义。为了安全,我们会自己在程序中做转义。
所以你会看到Ucenter会自己加上转义。因为用户传过来的数据有很多途径,最常用的是$_POST,$_GET,所以其他途径也进行转义了。然后就是引入需要的文件,数据库配置文件config.inc.php,/model/base.php,/model/admin.php。/model/base.php定义了base类,所有control类的根父类,即是说所有的control里的类直接继承或间接的继承于这个类./model/admin.php定义了adminbase类,本身继承于base类,是所有/control/admin里定义的类的父类。
接下来就是重点的了。这部分代码就是实现登陆的页面。
第一次进来,$m=frame,$a=index,判断$m和/control/admin/目录的文件是否匹配。匹配则加载相应的文件,例如frame.php,然后执行该类的on开头的方法,比如onindex(),如果不存在则执行_call()方法。
下一篇我们会追踪到frame.php的代码和他执行的onindex()函数。开时的时候记录了初始时间,后面我们可以看到记录的结束时间,这个时间差,会被赋值到注释的语句里面的#debug_time.如果你在config.inc.php中设置UC_DEBUG为true,开启了debug,/data/view/footer.php中的代码就会执行。
这个文件的后面两个函数,和/index.php,转义用户传递的数据,和接收参数。