discuz X2 源代码分析—-index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
1.<?php 2. 3./** 4.* [Discuz!] (C)2001-2099 Comsenz Inc. 5.* This is NOT a freeware, use is subject to license terms 6.* 7.* $Id: index.php 10420 2010-05-11 06:58:24Z zhaoxiongfei $ 8.*/ 9.//====加载全局配置==== 10. 11.@include './config/config_global.php'; 12.//====如果全局配置为空则说明系统尚未安装==== 13.14.//====进一步检测是否存在install.lock文件,不存在则转向到install文件夹路径下的文件,存在则说明配置信息丢失==== 15. 16.if(empty($_config)) { 17. if(!file_exists('./data/install.lock')) { 18. header('location: install'); 19. exit; 20. } else { 21. error('config_notfound'); 22. } 23.} 24.//====当前app名称==== 25.$_t_curapp = ''; 26.//====判断app绑定的域名==== 27.foreach($_config['app']['domain'] as $_t_app => $_t_domain) { 28. if($_t_domain == $_SERVER['HTTP_HOST']) { 29. $_t_curapp = $_t_app; 30. break; 31. } 32.} 33.//====如果当前app名称为空或为default,则进一步判断配置信息,设置app名称为默认或forum==== 34.if(empty($_t_curapp) || $_t_curapp == 'default') { 35. $_t_curapp = !empty($_config['app']['default']) ? $_config['app']['default'] : 'forum'; 36.} 37.//====重写$_SERVER['PHP_SELF']系统变量==== 38.$_SERVER['PHP_SELF'] = str_replace('index.php', $_t_curapp.'.php', $_SERVER['PHP_SELF']); 39.//====判断请求字符串是否为空,不为空则重写$_GET变量,指定系统下一步执行的方法和参数 40.if(!empty($_SERVER['QUERY_STRING'])) { 41. //====如果请求字符串为数字类型,则app名称为Home,调用spaceMOD,请求字符串作为uid传入==== 42. if(is_numeric($_SERVER['QUERY_STRING'])) { 43. $_t_curapp = 'home'; 44. $_GET = array('mod'=>'space', 'uid'=>$_SERVER['QUERY_STRING']); 45. //====如果请求字符串第一个字符为g且g之后的字符为数字则app名称为forum,调用groupMOD,请求字符串数字部分作为fid传入==== 46. //====经过测试,请求url形如index.php?g56==== 47. } elseif(strtolower($_SERVER['QUERY_STRING']{0}) == 'g' && is_numeric(substr($_SERVER['QUERY_STRING'], 1))) { 48. $_t_curapp = 'forum'; 49. $_GET = array('mod'=>'group', 'fid'=>intval(substr($_SERVER['QUERY_STRING'], 1))); 50. //====原理同上==== 51. } elseif(strtolower($_SERVER['QUERY_STRING']{0}) == 'f' && is_numeric(substr($_SERVER['QUERY_STRING'], 1))) { 52. $_t_curapp = 'forum'; 53. $_GET = array('mod'=>'forumdisplay', 'fid'=>intval(substr($_SERVER['QUERY_STRING'], 1))); 54. //====原理同上==== 55. } elseif(strtolower($_SERVER['QUERY_STRING']{0}) == 't' && is_numeric(substr($_SERVER['QUERY_STRING'], 1))) { 56. $_t_curapp = 'forum'; 57. $_GET = array('mod'=>'viewthread', 'tid'=>intval(substr($_SERVER['QUERY_STRING'], 1))); 58. } 59.} else { 60. //====如果请求字符串为空===== 61. //====判断个人空间是否启用二级域名及二级域名的根域名,若启用则解析二级域名指向实际对应的homeAPP,调用spaceMOD==== 62. if(!empty($_config['home']['allowdomain']) && !empty($_config['home']['domainroot'])) { 63. $_t_hosts = explode('.', $_SERVER['HTTP_HOST']); 64. $_t_domainroots = explode('.', $_config['home']['domainroot']); 65. $_t_domains = array_diff($_t_hosts, $_t_domainroots); 66. if($_t_domains && count($_t_domains) == 1) { 67. $_t_domain = array_shift($_t_domains); 68. $_t_holddomains = empty($_config['home']['holddomain'])?array():explode(',', $_config['home']['holddomain']); 69. if($_t_domain != 'www' && !in_array($_t_domain, $_t_holddomains)) { 70. $_t_curapp = 'home'; 71. $_GET = array('mod'=>'space', 'domain'=>$_t_domain); 72. } 73. } 74. } 75.} 76.//====根据之前获得的app名称调用具体的app文件==== 77.require './'.$_t_curapp.'.php'; 78. 79.?> |