欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

destoon代码从头到尾捋一遍

[php] view plain copy
 
  1. destoon® B2B网站管理系统(以下简称destoon)由西安嘉客信息科技有限责任公司独立研发并推出,对其拥有完全知识产权,中国国家版权局计算机软件著作权登记号:2009SR037570。  
  2. 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板、缓存、AJAX、SEO等前沿技术。与同类产品相比,系统功能更加强大、使用更加简单、运行更加稳定、安全性更强,效率更高,用户体验更好。系统开源发布,便于二次开发、功能整合、个性修改。  
  3. 代码首先包含common.inc.php文件  
  4. 在common.inc.php文件中,首先定义常量。  
  5. define('IN_DESTOON', true);  
  6. define('IN_ADMIN', defined('DT_ADMIN') ? true : false);  
  7. define('DT_ROOT'str_replace("\\"'/', dirname(__FILE__)));  
  8. if(defined('DT_REWRITE')) include DT_ROOT.'/include/rewrite.inc.php';//是否定义了url伪静态?  
  9. $CFG = array();//网站整体配置信息  
  10. require DT_ROOT.'/config.inc.php';//-----------------网站配置文件  
  11. define('DT_PATH'$CFG['url']);  
  12. define('DT_DOMAIN'$CFG['cookie_domain'] ? substr($CFG['cookie_domain'], 1) : '');  
  13. define('DT_WIN'strpos(strtoupper(PHP_OS), 'WIN') !== false ? true: false);  
  14. define('DT_CHMOD', ($CFG['file_mod'] && !DT_WIN) ? $CFG['file_mod'] : 0);  
  15. define('DT_URL'$CFG['url']);//Fox 3.x  
  16. define('DT_LANG'$CFG['language']);  
  17. define('DT_KEY'$CFG['authkey']);  
  18. define('DT_CHARSET'$CFG['charset']);  
  19. define('DT_CACHE'$CFG['cache_dir'] ? $CFG['cache_dir'] : DT_ROOT.'/file/cache');  
  20. define('DT_SKIN', DT_PATH.'skin/'.$CFG['skin'].'/');  
  21. define('SKIN_PATH', DT_PATH.'skin/'.$CFG['skin'].'/');//For 2.x  
  22. define('VIP'$CFG['com_vip']);  
  23. define('errmsg''Invalid Request');  
  24. 随后加载网站基本功能  
  25. $L = array();  
  26. include DT_ROOT.'/lang/'.DT_LANG.'/lang.inc.php';//语言信息  
  27. require DT_ROOT.'/version.inc.php';  
  28. require DT_ROOT.'/include/global.func.php';//--------全局函数  
  29. require DT_ROOT.'/include/tag.func.php';//-----------标签函数  
  30. require DT_ROOT.'/api/im.func.php';//----------------聊天工具  
  31. require DT_ROOT.'/api/extend.func.php';//------------自己写的扩展函数  
  32. if(!$MQG && $_POST$_POST = daddslashes($_POST);  
  33. if(!$MQG && $_GET$_GET = daddslashes($_GET);  
  34. if(function_exists('date_default_timezone_set')) date_default_timezone_set($CFG['timezone']);  
  35. $DT_PRE = $CFG['tb_pre'];  
  36. $DT_QST = $_SERVER['QUERY_STRING'];//----------------querystring  
  37. $DT_TIME = time() + $CFG['timediff'];//--------------当前时间  
  38. $DT_IP = get_env('ip');  
  39. $DT_URL = get_env('url');  
  40. $DT_REF = get_env('referer');  
  41. $DT_BOT = is_robot();  
  42. 链接数据库,建立缓存。  
  43. header("Content-Type:text/html;charset=".DT_CHARSET);  
  44. require DT_ROOT.'/include/db_'.$CFG['database'].'.class.php';//加载数据库类  
  45. require DT_ROOT.'/include/cache_'.$CFG['cache'].'.class.php';//加载缓存类  
  46. if($_POST) extract($_POST, EXTR_SKIP);//解析post请求的数据  
  47. if($_GET) extract($_GET, EXTR_SKIP);//解析get请求的数据  
  48. $db_class = 'db_'.$CFG['database'];  
  49. $db = new $db_class;  
  50. $db->halt = (DT_DEBUG || IN_ADMIN) ? 1 : 0;  
  51. $db->pre = $CFG['tb_pre'];  
  52. $db->connect($CFG['db_host'], $CFG['db_user'], $CFG['db_pass'], $CFG['db_name'], $CFG['db_expires'], $CFG['db_charset'], $CFG['pconnect']);  
  53. $dc = new dcache();  
  54. $dc->pre = $CFG['cache_pre'];  
  55. 加载模块的基本配置  
  56. $DT = $MOD = $EXT = $CSS = $DTMP = $CAT = $ARE = $AREA = array();  
  57. $CACHE = cache_read('module.php');  
  58. if(!$CACHE) {  
  59. //没有缓存模块,就读取缓存模块。  
  60. require_once DT_ROOT.'/admin/global.func.php';  
  61. require_once DT_ROOT.'/include/post.func.php';  
  62. require_once DT_ROOT.'/include/cache.func.php';  
  63.     cache_all();  
  64. $CACHE = cache_read('module.php');  
  65. }  
  66. $DT = $CACHE['dt'];  
  67. $MODULE = $CACHE['module'];  
  68. $EXT = cache_read('module-3.php');  
  69. 加载模块,读取模块信息,引入模块文件  
  70. if(!isset($moduleid)) {  
  71. $moduleid = 1;  
  72. $module = 'destoon';  
  73. else if($moduleid == 1) {  
  74. $module = 'destoon';  
  75. else {  
  76. $moduleid = intval($moduleid);  
  77. isset($MODULE[$moduleid]) or dheader(DT_PATH);  
  78. $module = $MODULE[$moduleid]['module'];  
  79. $MOD = $moduleid == 3 ? $EXT : cache_read('module-'.$moduleid.'.php');  
  80. include DT_ROOT.'/lang/'.DT_LANG.'/'.$module.'.inc.php';  
  81. }  
  82. $forward = isset($forward) ? urldecode($forward) : $DT_REF;//------------来源页面  
  83. $action = isset($action) ? trim($action) : '';//-------------动作指令  
  84. //判断用户登录  
  85. $destoon_auth = get_cookie('auth');  
  86. if($destoon_auth) {  
  87. $_dauth = explode("\t", decrypt($destoon_auth, md5(DT_KEY.$_SERVER['HTTP_USER_AGENT'])));  
  88. //print_r($_dauth);SELECT userid,username,groupid,admin FROM destoon_member  
  89. $_userid = isset($_dauth[0]) ? intval($_dauth[0]) : 0;  
  90. $_username = isset($_dauth[1]) ? trim($_dauth[1]) : '';  
  91. $_groupid = isset($_dauth[2]) ? intval($_dauth[2]) : 3;  
  92. $_admin = isset($_dauth[4]) ? intval($_dauth[4]) : 0;  
  93. if($_userid && !defined('DT_NONUSER')) {  
  94. $_password = isset($_dauth[3]) ? trim($_dauth[3]) : '';  
  95. $user = $db->get_one("SELECT username,passport,company,truename,password,groupid,email,message,chat,sound,online,sms,credit,money,loginip,admin,aid,edittime,trade FROM {$DT_PRE}member WHERE userid=$_userid");  
  96. if($user && $user['password'] == $_password) {  
  97. if($user['groupid'] == 2) dalert(lang('message->common_forbidden'));//禁止用户访问的组别  
  98. extract($user, EXTR_PREFIX_ALL, '');  
  99. if($user['loginip'] != $DT_IP && ($DT['ip_login'] == 2 || ($DT['ip_login'] == 1 && IN_ADMIN))) {  
  100. //单点登录,判断ip  
  101. $_userid = 0; set_cookie('auth''');  
  102. dalert(lang('message->common_login'array($user['loginip'])), DT_PATH);  
  103. }  
  104. else {  
  105. //登录失败  
  106. $_userid = 0;  
  107. if($db->linked && !isset($swfupload) && strpos($_SERVER['HTTP_USER_AGENT'], 'Flash') === false) set_cookie('auth''');  
  108. }  
  109. unset($destoon_auth$user$_dauth$_password);  
  110. }  
  111. }  
  112.   
  113. if($_userid == 0) { $_groupid = 3; $_username = ''; }  
  114. if(!IN_ADMIN) {  
  115. if($_groupid == 1) include DT_ROOT.'/module/member/admin.inc.php';  
  116. if($_userid && !defined('DT_NONUSER')) {  
  117. $db->query("REPLACE INTO {$DT_PRE}online (userid,username,ip,moduleid,online,lasttime) VALUES ('$_userid','$_username','$DT_IP','$moduleid','$_online','$DT_TIME')");  
  118. }   
  119. else {  
  120. if(timetodate($DT_TIME'i') == 10) {  
  121. $lastime = $DT_TIME - $DT['online'];  
  122. $db->query("DELETE FROM {$DT_PRE}online WHERE lasttime<$lastime");  
  123. }  
  124. }  
  125. }  
  126. $MG = cache_read('group-'.$_groupid.'.php');//读取用户组别配置  
  127. $_areaids = '';  
  128. $_areaid = array();  
  129. if($DT['city']) {  
  130. $AREA or $AREA = cache_read('area.php');  
  131. if($_aid) {  
  132. $_areaids = $AREA[$_aid]['child'] ? $AREA[$_aid]['arrchildid'] : $_aid;  
  133. $_areaid = explode(','$_areaids);  
  134. }  
  135. else {  
  136. $_aid < 1 or dalert('系统未开启分站功能,您的分站管理帐号暂不可用'$MODULE[2]['linkurl'].'logout.php');  
  137. }  
  138. $session = new dsession();  
  139. require DT_ROOT.'/admin/global.func.php';  
  140. require DT_ROOT.'/include/post.func.php';  
  141. require_once DT_ROOT.'/include/cache.func.php';  
  142. isset($fileor $file = 'index';  
  143. $secretkey = 'admin_'.strtolower(substr($CFG['authkey'], -6));  
  144. //echo $secretkey;exit;  
  145. if($DT['authadmin'] == 'session') {  
  146. $_destoon_admin = isset($_SESSION[$secretkey]) ? intval($_SESSION[$secretkey]) : 0;  
  147. else {  
  148. $_destoon_admin = get_cookie($secretkey);  
  149. $_destoon_admin = $_destoon_admin ? intval($_destoon_admin) : 0;  
  150. }  
  151. $_founder = $CFG['founderid'] == $_userid ? $_userid : 0;  
  152. $_catids = $_childs = '';  
  153. $_catid = $_child = array();  
  154. if($file != 'login') {  
  155. if($_groupid != 1 || $_admin < 1 || !$_destoon_admin) msg('''?file=login&forward='.urlencode($DT_URL));  
  156. //判断用户是否已经登录?如果未登录,直接跳转到登录页面。防止用户构造url。  
  157. if(!admin_check()) {  
  158. admin_log(1);  
  159. $db->query("DELETE FROM {$db->pre}admin WHERE userid=$_userid AND url='?".$DT_QST."'");  
  160. msg('警告!您无权进行此操作 Error(00)');  
  161. }  
  162. }  
  163. //是否记录日志  
  164. if($DT['admin_log'] && $action != 'import') admin_log();  
  165. if($DT['admin_online']) admin_online();  
  166. $psize = isset($psize) ? intval($psize) : 0;  
  167. if($psize > 0 && $psize != $pagesize) {  
  168. $pagesize = $psize;  
  169. $offset = ($page-1)*$pagesize;  
  170. }  
  171.   
  172. if($module == 'destoon') {  
  173.   
  174. (include DT_ROOT.'/admin/'.$file.'.inc.php'or msg();  
  175. else {  
  176. echo $file.'|'.$module;  
  177. include DT_ROOT.'/module/'.$module.'/common.inc.php';//加载模块下的common文件  
  178. (include MD_ROOT.'/admin/'.$file.'.inc.php'or msg();//加载模块文件  

来自 http://blog.csdn.net/xst686/article/details/8476670

普通分类: