授人以鱼不如授人以渔,UCHome全面大解析培训【第一集】

使用UCHome插件的用户越来越多,但所有的站都使用同样的同样的程序,没有自己的特色是很难推广开的。同时不同的站需要不同的功能,同时同一个站在不同的时期也有不同的功能需求,鉴于此,本人通过多款插件的开发经验,对UCHome程序也有了一定的认识。为了感谢广大站长对我的插件的关心,本人开贴,对UCHome程序进行全面解析。主要分为程序篇和模板篇。请希望学习UCHome的会员关注此贴。今天晚上准备第一章,
index.php文件第一行就是包含了
include_once('./common.php');
文件所以先对common.php文件解析
代码
  1  <? php
  2  /*
  3          [UCenter Home] (C) 2007-2008 Comsenz Inc.
  4          $Id: common.php 10981 2009-01-14 03:05:20Z liguode $
  5  */
  6  // 定义一个常量,用来在其他页面中,防止被恶意用户直接调用其他PHP文件。
  7  @ define ( ' IN_UCHOME ' ,   TRUE );
  8  // 定义一个常量,这个常量表示版本号
  9  define ( ' X_VER ' ,   ' 1.5 ' );
 10  // 这个也是一个常量,次版本号
 11  define ( ' X_RELEASE ' ,   ' 20090114 ' );
 12  /* 定义程序的调试模式,在我们调试程序的时候将常量值设为1,这样程序出错的时候会在页面显示错误信息。
 13  在调试完毕正常投入使用后设为0,这样程序出错不会显示给用户。
 14  */
 15  define ( ' D_BUG ' ,   ' 0 ' );
 16  // 通过D_BUG常量值指定错误报告类型。其中error_reporting()的参数是错误报告类型,相关参数可查询PHP手册
 17  D_BUG ? error_reporting ( 7 ) : error_reporting ( 0 );
 18  // 这下面都是定义的全局变量。具体的会在后面使用的时候一一介绍
 19  $_SGLOBAL   =   $_SCONFIG   =   $_SBLOCK   =   $_TPL   =   $_SCOOKIE   =   $_SN   =   $space   =   array ();
 20  // 定义程序目录常量。其中DIRECTORY_SEPARATOR是路径分隔符,linux上就是’/’ windows上是’\’
 21  define ( ' S_ROOT ' ,   dirname ( __FILE__ ) . DIRECTORY_SEPARATOR);
 22 
 23  // 加载基本的配置文件,用了@符号,达到找不到该文件时在页面不提示错误信息
 24  if ( ! @ include_once (S_ROOT . ' ./config.php ' )) {
 25           // 如果找不到的话则重定向到安装文件
 26           header ( " Location: install/index.php " );
 27           exit ();
 28  }
 29 
 30  // 通用函数文件,具体函数在介绍时间会一一解释
 31  include_once (S_ROOT . ' ./source/function_common.php ' );
 32  // 时间microtime()获取含毫秒的时间
 33  $mtime   =   explode ( '   ' ,   microtime ());
 34  $_SGLOBAL [ ' timestamp ' =   $mtime [ 1 ];
 35  // $mtime[0]为UNIX时间戳(整形), $mtime[0]为毫秒
 36  $_SGLOBAL [ ' supe_starttime ' =   $_SGLOBAL [ ' timestamp ' +   $mtime [ 0 ];
 37 
 38  // get_magic_quotes_gpc检测PHP.INI配置中的魔术引号功能是否打开
 39  $magic_quote   =   get_magic_quotes_gpc ();
 40  if ( empty ( $magic_quote )) {
 41           // 如果自动过滤每打开,则对传入的参数进行转义
 42           $_GET   =  saddslashes( $_GET );
 43           $_POST   =  saddslashes( $_POST );
 44  }
 45 
 46  // 货主站点的URL,其中getsiteurl()是用来获取当前站点的域名
 47  if ( empty ( $_SC [ ' siteurl ' ]))  $_SC [ ' siteurl ' =  getsiteurl();
 48 
 49  // 链接数据库
 50  dbconnect();
 51 
 52  // 打开缓存文件
 53  foreach  ( array ( ' config ' ,   ' app ' ,   ' userapp ' ,   ' ad ' as   $value ) {
 54           if ( ! @ include_once (S_ROOT . ' ./data/data_ ' . $value . ' .php ' )) {
 55                   // 如果缓存文件打开失败重建缓存,function_cache.php是包含建立缓存的函数文件
 56                   include_once (S_ROOT . ' ./source/function_cache.php ' );
 57                   $cache_func   =   $value . ' _cache ' ;
 58                   // 调用相应的函数来生成缓存。
 59                   $cache_func ();
 60          }
 61  }
 62 
 63  // 获取COOKIE前缀的长度,$_SC['cookiepre']是在config.php中定义的COOKIE函数的前缀名称,$_COOKIE是存放COOKIE的数据全局变量数组
 64  $prelength   =   strlen ( $_SC [ ' cookiepre ' ]);
 65  foreach ( $_COOKIE   as   $key   =>   $val ) {
 66           // 判断当前域名下的COOKIE中属于UCHome的COOKIE
 67           if ( substr ( $key ,   0 ,   $prelength ==   $_SC [ ' cookiepre ' ]) {
 68                   // 对COOKIE值进行转义
 69                   $_SCOOKIE [( substr ( $key ,   $prelength ))]  =   empty ( $magic_quote ?  saddslashes( $val :   $val ;
 70          }
 71  }
 72 
 73  // 是否启用GIP压缩传输,这个是用来提高PHP传输速度的。
 74  if  ( $_SC [ ' gzipcompress ' &&   function_exists ( ' ob_gzhandler ' )) {
 75           ob_start ( ' ob_gzhandler ' );
 76  else  {
 77           ob_start ();
 78  }
 79 
 80  // 初始化
 81  $_SGLOBAL [ ' supe_uid ' =   0 // 初始化当前用户的UID
 82  $_SGLOBAL [ ' supe_username ' =   '' // 初始化当前用户的用户名
 83  $_SGLOBAL [ ' inajax ' =   empty ( $_GET [ ' inajax ' ]) ? 0 : intval ( $_GET [ ' inajax ' ]);  // 这个是用来在页面中控制一些弹出框,在模板篇会介绍
 84  $_SGLOBAL [ ' ajaxmenuid ' =   empty ( $_GET [ ' ajaxmenuid ' ]) ? '' : $_GET [ ' ajaxmenuid ' ];
 85  $_SGLOBAL [ ' refer ' =   empty ( $_SERVER [ ' HTTP_REFERER ' ]) ? '' : $_SERVER [ ' HTTP_REFERER ' ];  // 获得上一页的URL,用来跳转
 86 
 87  //登录注册防灌水机
 88  /*
 89  在登录或者注册的时候看到形如:do.php?ac=750e45d29d276b2f86f1445627c08f99的链接
 90  后面的750e45d29d276b2f86f1445627c08f99就是用下面的来获取的。
 91  */
 92  if ( empty ( $_SCONFIG [ ' login_action ' ]))  $_SCONFIG [ ' login_action ' =   md5 ( ' login ' . md5 ( $_SCONFIG [ ' sitekey ' ]));
 93  if ( empty ( $_SCONFIG [ ' register_action ' ]))  $_SCONFIG [ ' register_action ' =   md5 ( ' register ' . md5 ( $_SCONFIG [ ' sitekey ' ]));
 94 
 95  // 整站风格,检查站点模板的路径。此处是default目录,就是我们常用黄色风格的模板路径
 96  if ( empty ( $_SCONFIG [ ' template ' ])) {
 97           $_SCONFIG [ ' template ' =   ' default ' ;
 98  }
 99  // 在首页由下角可以自行选择风格的实现就是通过这段。
100  if ( $_SCOOKIE [ ' mytemplate ' ]) {
101           $_SCOOKIE [ ' mytemplate ' =   str_replace ( ' . ' , '' , trim ( $_SCOOKIE [ ' mytemplate ' ]));
102           if ( file_exists (S_ROOT . ' ./template/ ' . $_SCOOKIE [ ' mytemplate ' ] . ' /style.css ' )) {
103                   $_SCONFIG [ ' template ' =   $_SCOOKIE [ ' mytemplate ' ];
104          }  else  {
105                  ssetcookie( ' mytemplate ' ,   '' );
106          }
107  }
108 
109  // 处理REQUEST_URI,查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 如为空则为当前页面。
110  if ( ! isset ( $_SERVER [ ' REQUEST_URI ' ])) {  
111           $_SERVER [ ' REQUEST_URI ' =   $_SERVER [ ' PHP_SELF ' ];
112           if ( isset ( $_SERVER [ ' QUERY_STRING ' ]))  $_SERVER [ ' REQUEST_URI ' .=   ' ? ' . $_SERVER [ ' QUERY_STRING ' ];
113  }
114          
115  // 判断用户登录状态
116  checkauth();
117 
118  // 用户菜单
119  getuserapp();
120 
121  // 处理UC应用,这个是漫游相关菜单,在此不用解释
122  $_SGLOBAL [ ' appmenus ' =   $_SGLOBAL [ ' appmenu ' =   array ();
123  if ( $_SGLOBAL [ ' app ' ]) {
124           foreach  ( $_SGLOBAL [ ' app ' as   $value ) {
125                   if ( $value [ ' open ' ]) {
126                           if ( empty ( $_SGLOBAL [ ' appmenu ' ])) {
127                                   $_SGLOBAL [ ' appmenu ' =   $value ;
128                          }  else  {
129                                   $_SGLOBAL [ ' appmenus ' ][]  =   $value ;
130                          }
131                  }
132          }
133  }
134 
135  ?>

 

 

 

转自:http://www.yiqi123.cn/read.php?tid-24.html

你可能感兴趣的:(home)