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();

接下来是引入释放版本的model下的文件,如果有会优先引入/release/下面的model文件,没有的话,则使用/model下的文件

 技术分享

如果你的$m和$a存在的话,那么,则会使用下面这段代码进行动态的调用。从代码中可以看m只有 以下几种,app、frame、user,这些都对应这个/control下面的几个文件。 

技术分享

然后将对应的control文件加载进来,获得类名,进而实例化类,调用method之前,先判断类是否有该函数,优先调用$method=on.$a方法,如果不存在的话,就使用_call($method)调用;

从下面的图中可以看到m可以实例化成下面对应的对象。至于$a的取值则对于改类下面的方法实现。我们可以做一个小测试.$m=app,$a=add,测试结果如右侧图,至于为什么返回-1,请看/control/app.php下面的onadd()方法。

技术分享

技术分享

 

 

 

 

 

 

 

 

 

 

 

index.php后面关于addslash函数 的加工,是一种安全措施,一般是为了处理PHP6以上的变化,因为php6已经弃用了MAGIC_QUOTES_GPC,所以服务器不会对$_POST,$_GET,$COOKIE.这些客户端来的数据进行转义。这样就需要使用addslashes对其手工转义,这样单引号‘、双引号",/的特殊字符将不会引发sql注入问题。

 

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