UCenter Home代碼分析之-核心文件common.php

 

  1. <?php     
  2. /*    
  3.     [UCenter Home] (C) 2007-2008 Comsenz Inc.    
  4.     $Id: common.php 13217 2009-08-21 06:57:53Z liguode $    
  5. */    
  6.     
  7. /*    
  8. 分析者  C7_yaohuaq.      [email protected]    
  9. 分析時間  2009-11-11.    
  10. 分析文件名:common.php    
  11. */    
  12.     
  13. /*    
  14. 定義一個入口,防止非法進入。也就是說另外一個頁面必須引用common.php,纔可以訪問,如果直接在瀏覽器地址欄輸入頁面地址訪問會失敗。    
  15. 爲什麼要這麼做?這麼說吧,UCH裏的一些頁面,只需要在程序裏引用即可,不想讓外部用戶訪問。    
  16. */    
  17. @define('IN_UCHOME', TRUE);     
  18. /*    
  19. 是否開啓D_BUG    
  20. */    
  21. define('D_BUG''0');     
  22. /*    
  23. 設定開啓出錯信息等級,詳細的自己去查下error_reporting函數去。    
  24. */    
  25. D_BUG?error_reporting(7):error_reporting(0);     
  26. /*    
  27. 關閉自動轉義    
  28. */    
  29. set_magic_quotes_runtime(0);     
  30. /*    
  31. 安全起見,變量初始化    
  32. */    
  33. $_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $_SN = $space = array();     
  34.     
  35. //定義程序目錄,絕對路徑比相對路徑要好,速度也要快。     
  36. define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);     
  37.     
  38. //基本文件     
  39. include_once(S_ROOT.'./ver.php');     
  40. /*    
  41. 如果沒有配置文件,則轉到安裝頁面    
  42. */    
  43. if(!@include_once(S_ROOT.'./config.php')) {     
  44.     header("Location: install/index.php");//安裝     
  45.     exit();     
  46. }     
  47. /*    
  48. 引用基礎函數文件    
  49. */    
  50. include_once(S_ROOT.'./source/function_common.php');     
  51.     
  52. //時間     
  53. $mtime = explode(' ', microtime());     
  54. /*    
  55. 講一些常用的信息放到數組裏是一個不錯也常用的手法    
  56. 然後數組信息放到一個文本文件裏,就不必每次都要查詢數據庫了,大大提高了速度和效率。    
  57. */    
  58. $_SGLOBAL['timestamp'] = $mtime[1];     
  59. $_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0];     
  60.     
  61. //GPC過濾     
  62. $magic_quote = get_magic_quotes_gpc();     
  63. /*    
  64. 如果開啓轉義,則用saddslashes這個函數進行對GET,POST過來的數據進行轉義。    
  65. saddslashes函數 在function_common.php裏。    
  66. */    
  67. if(emptyempty($magic_quote)) {     
  68.     $_GET = saddslashes($_GET);     
  69.     $_POST = saddslashes($_POST);     
  70. }     
  71.     
  72. //本站URL     
  73. if(emptyempty($_SC['siteurl'])) $_SC['siteurl'] = getsiteurl();     
  74.     
  75. //鏈接數據庫     
  76. dbconnect();     
  77.     
  78. //緩存文件     
  79. /*    
  80. 打開data_config.php 你就知道$_SGLOBAL 原來是這樣的。    
  81.  如果讀取data_config.php失敗,就包含function_cache.php文件,config_cache函數重新生成data_config.php緩存文件.    
  82. */    
  83. if(!@include_once(S_ROOT.'./data/data_config.php')) {     
  84.     include_once(S_ROOT.'./source/function_cache.php');     
  85.     config_cache();     
  86.     include_once(S_ROOT.'./data/data_config.php');     
  87. }     
  88. foreach (array('app''userapp''ad''magic'as $value) {     
  89.     @include_once(S_ROOT.'./data/data_'.$value.'.php');     
  90. }     
  91.     
  92. //COOKIE     
  93. /*    
  94. 對COOKIE進行處理,並放入$_SCOOKIE這個數組中    
  95. 注意$cookiepre,即COOKIE前綴。    
  96. 對本地的COOKIE前綴和服務器裏設定的COOKIE前綴進行判斷,相等才進行數據插入。    
  97. */    
  98. $prelength = strlen($_SC['cookiepre']);     
  99. foreach($_COOKIE as $key => $val) {     
  100.     if(substr($key, 0, $prelength) == $_SC['cookiepre']) {     
  101.         $_SCOOKIE[(substr($key$prelength))] = emptyempty($magic_quote) ? saddslashes($val) : $val;     
  102.     }     
  103. }     
  104.     
  105. //啓用GIP     
  106. /*    
  107. 緩衝輸出,如果開啓了ob_gzhandler,數據壓縮,減少用戶下載數據的時間。    
  108. ob_start 自己去查手冊。    
  109. */    
  110. if ($_SC['gzipcompress'] && function_exists('ob_gzhandler')) {     
  111.     ob_start('ob_gzhandler');     
  112. else {     
  113.     ob_start();     
  114. }     
  115.     
  116. //初始化一些常用數據咯...     
  117. $_SGLOBAL['supe_uid'] = 0;     
  118. $_SGLOBAL['supe_username'] = '';     
  119. $_SGLOBAL['inajax'] = emptyempty($_GET['inajax'])?0:intval($_GET['inajax']);     
  120. $_SGLOBAL['mobile'] = emptyempty($_GET['mobile'])?'':trim($_GET['mobile']);     
  121. $_SGLOBAL['ajaxmenuid'] = emptyempty($_GET['ajaxmenuid'])?'':$_GET['ajaxmenuid'];     
  122. $_SGLOBAL['refer'] = emptyempty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER'];     
  123. if(emptyempty($_GET['m_timestamp']) || $_SGLOBAL['mobile'] != md5($_GET['m_timestamp']."\t".$_SCONFIG['sitekey'])) $_SGLOBAL['mobile'] = '';     
  124.     
  125. //登錄註冊防灌水機     
  126. if(emptyempty($_SCONFIG['login_action'])) $_SCONFIG['login_action'] = md5('login'.md5($_SCONFIG['sitekey']));     
  127. if(emptyempty($_SCONFIG['register_action'])) $_SCONFIG['register_action'] = md5('register'.md5($_SCONFIG['sitekey']));     
  128.     
  129. //整站風格,獲取模板名,放入$_SCONFIG數組備用     
  130. if(emptyempty($_SCONFIG['template'])) {     
  131.     $_SCONFIG['template'] = 'default';     
  132. }     
  133. /*    
  134. 個人自定義風格處理,風格數據是放在COOKIE中的。    
  135. */    
  136. if($_SCOOKIE['mytemplate']) {     
  137.     $_SCOOKIE['mytemplate'] = str_replace('.','',trim($_SCOOKIE['mytemplate']));     
  138.     if(file_exists(S_ROOT.'./template/'.$_SCOOKIE['mytemplate'].'/style.css')) {     
  139.         $_SCONFIG['template'] = $_SCOOKIE['mytemplate'];     
  140.     } else {     
  141.         ssetcookie('mytemplate''', 365000);     
  142.     }     
  143. }     
  144.     
  145. //處理REQUEST_URI     
  146. if(!isset($_SERVER['REQUEST_URI'])) {       
  147.     $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];     
  148.     if(isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING'];     
  149. }     
  150. /*    
  151. 如果$_SERVER['REQUEST_URI']進行urldecode解碼後如果發現有<和"字符,shtmlspecialchars處理GET的數據    
  152. 其實是防止跨站,什麼是跨站自己百度下。    
  153. */    
  154. if($_SERVER['REQUEST_URI']) {     
  155.     $temp = urldecode($_SERVER['REQUEST_URI']);     
  156.     if(strexists($temp'<') || strexists($temp'"')) {     
  157.         $_GET = shtmlspecialchars($_GET);//XSS     
  158.     }     
  159. }     
  160.          
  161. //判斷用戶登錄狀態     
  162. checkauth();     
  163. /*    
  164. 將用戶的UID和時間前7位MD5加密放入$_SGLOBAL中,是否登錄判斷和登陸超時判斷    
  165. */    
  166. $_SGLOBAL['uhash'] = md5($_SGLOBAL['supe_uid']."\t".substr($_SGLOBAL['timestamp'], 0, 6));     
  167.     
  168. //用戶菜單 function_common.php裏     
  169. getuserapp();     
  170.     
  171. //處理UC應用     
  172. $_SCONFIG['uc_status'] = 0;     
  173. $_SGLOBAL['appmenus'] = $_SGLOBAL['appmenu'] = array();     
  174. /*    
  175. 對UC數據的一些處理 config.php裏。    
  176. */    
  177. if($_SGLOBAL['app']) {     
  178.     foreach ($_SGLOBAL['app'as $appid => $value) {     
  179.         if(UC_APPID != $appid) {     
  180.             $_SCONFIG['uc_status'] = 1;     
  181.         }     
  182.         if($value['open']) {     
  183.             if(emptyempty($_SGLOBAL['appmenu'])) {     
  184.                 $_SGLOBAL['appmenu'] = $value;     
  185.             } else {     
  186.                 $_SGLOBAL['appmenus'][] = $value;     
  187.             }     
  188.         }     
  189.     }     
  190. }     
  191.     
  192. ?>   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章