国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

377 lines
11KB

  1. <?php
  2. /**
  3. * @version $Id: common.inc.php 3 17:44 2010-11-23 tianya $
  4. * @package DedeCMS.Libraries
  5. * @copyright Copyright (c) 2020, DedeBIZ.COM
  6. * @license https://www.dedebiz.com/license
  7. * @link https://www.dedebiz.com
  8. */
  9. // 生产环境使用production,如果采用dev模式,会有一些php的报错信息提示,便于开发调试
  10. define('DEDE_ENVIRONMENT', 'dev');
  11. if ( DEDE_ENVIRONMENT == 'production' )
  12. {
  13. error_reporting(E_ALL || ~E_NOTICE);
  14. } else {
  15. error_reporting(E_ALL);
  16. }
  17. define('DEBUG_LEVEL', FALSE); // 如果设置为TRUE则会打印执行SQL的时间和标签加载时间方便调试
  18. define('DEDEINC', str_replace("\\", '/', dirname(__FILE__) ) );
  19. define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC,0,-8) ) );
  20. define('DEDEDATA', DEDEROOT.'/data');
  21. define('DEDEMEMBER', DEDEROOT.'/member');
  22. define('DEDETEMPLATE', DEDEROOT.'/templets');
  23. // ------------------------------------------------------------------------
  24. define('DEDEMODEL', './model');
  25. define('DEDECONTROL', './control');
  26. define('DEDEAPPTPL', './templates');
  27. // ------------------------------------------------------------------------
  28. define('DEDEBIZURL', "http://127.0.0.1:8898"); // Dede商业支持
  29. define('DEDEVER', 6); // 当前系统大版本
  30. define('DEDEPUB', <<<EOT
  31. -----BEGIN PUBLIC KEY-----
  32. MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvupO2Lixns34bBqwTzK0
  33. 9wA9sfGBdgc03zh1sUacieJBikx08e7xmkJbMF81jb/YfNGW/+iJ3qHULdc9Dtd3
  34. +FsnHG+tUDnzjkPnVVmnrjucQqfHRRVKKAgXOWxtuRKUVF3NDjiJtDAf5Y2BMAhw
  35. oqzeepye5I4mWyO4A8/V2ougO+xDK426MIf1dq+W59NVZj8k+zeZrbPh7+fPFw4u
  36. PwAMpkTJJ9nwNOO6saH2eMGaQ3oxZIQ+SmminDB8miI/+hwIn2hNmaHFuur0OGlB
  37. NQabUzX9JoYtXqPcpZRT7ymHrppU0KFdUSEJiW0utTWJo0HrDOBIT5qWlM0MP9p/
  38. PwIDAQAB
  39. -----END PUBLIC KEY-----
  40. EOT); // DedeBIZ系统公钥
  41. define('DEDECDNURL', 'https://cdn.dedebiz.com'); // 默认静态资源地址
  42. if (version_compare(PHP_VERSION, '5.3.0', '<') && function_exists("get_magic_quotes_gpc"))
  43. {
  44. set_magic_quotes_runtime(0);
  45. }
  46. if (version_compare(PHP_VERSION, '5.4.0', '>='))
  47. {
  48. if (!function_exists('session_register'))
  49. {
  50. function session_register()
  51. {
  52. $args = func_get_args();
  53. foreach ($args as $key){
  54. $_SESSION[$key]=$GLOBALS[$key];
  55. }
  56. }
  57. function session_is_registered($key)
  58. {
  59. return isset($_SESSION[$key]);
  60. }
  61. function session_unregister($key){
  62. unset($_SESSION[$key]);
  63. }
  64. }
  65. }
  66. //是否启用mb_substr替换cn_substr来提高效率
  67. $cfg_is_mb = $cfg_is_iconv = FALSE;
  68. if(function_exists('mb_substr')) $cfg_is_mb = TRUE;
  69. if(function_exists('iconv_substr')) $cfg_is_iconv = TRUE;
  70. function _RunMagicQuotes(&$svar)
  71. {
  72. if(function_exists("get_magic_quotes_gpc") && !@get_magic_quotes_gpc())
  73. {
  74. if( is_array($svar) )
  75. {
  76. foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
  77. }
  78. else
  79. {
  80. if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )
  81. {
  82. exit('Request var not allow!');
  83. }
  84. $svar = addslashes($svar);
  85. }
  86. }
  87. return $svar;
  88. }
  89. if (!defined('DEDEREQUEST'))
  90. {
  91. //检查和注册外部提交的变量 (2011.8.10 修改登录时相关过滤)
  92. function CheckRequest(&$val) {
  93. if (is_array($val)) {
  94. foreach ($val as $_k=>$_v) {
  95. if($_k == 'nvarname') continue;
  96. CheckRequest($_k);
  97. CheckRequest($val[$_k]);
  98. }
  99. } else
  100. {
  101. if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$val) )
  102. {
  103. exit('Request var not allow!');
  104. }
  105. }
  106. }
  107. //var_dump($_REQUEST);exit;
  108. CheckRequest($_REQUEST);
  109. CheckRequest($_COOKIE);
  110. foreach(Array('_GET','_POST','_COOKIE') as $_request)
  111. {
  112. foreach($$_request as $_k => $_v)
  113. {
  114. if($_k == 'nvarname') ${$_k} = $_v;
  115. else ${$_k} = _RunMagicQuotes($_v);
  116. }
  117. }
  118. }
  119. //系统相关变量检测
  120. if(!isset($needFilter))
  121. {
  122. $needFilter = false;
  123. }
  124. $registerGlobals = @ini_get("register_globals");
  125. $isUrlOpen = @ini_get("allow_url_fopen");
  126. $isSafeMode = @ini_get("safe_mode");
  127. if( preg_match('/windows/i', @getenv('OS')) )
  128. {
  129. $isSafeMode = false;
  130. }
  131. //系统配置参数
  132. require_once(DEDEDATA."/config.cache.inc.php");
  133. //Session保存路径
  134. $sessSaveHandler = @ini_get("session.save_handler");
  135. if ($sessSaveHandler !== "files") {
  136. @ini_set("session.save_handler", "files");
  137. }
  138. $enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);
  139. $sessSavePath = DEDEDATA."/sessions_{$enkey}";
  140. if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);
  141. if(is_writeable($sessSavePath) && is_readable($sessSavePath))
  142. {
  143. session_save_path($sessSavePath);
  144. }
  145. //转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数
  146. if($_FILES)
  147. {
  148. require_once(DEDEINC.'/uploadsafe.inc.php');
  149. }
  150. //数据库配置文件
  151. require_once(DEDEDATA.'/common.inc.php');
  152. if ( !isset($cfg_dbtype) )
  153. {
  154. $cfg_dbtype = 'mysql';
  155. }
  156. //载入系统验证安全配置
  157. if(file_exists(DEDEDATA.'/safe/inc_safe_config.php'))
  158. {
  159. require_once(DEDEDATA.'/safe/inc_safe_config.php');
  160. if(!empty($safe_faqs)) $safefaqs = unserialize($safe_faqs);
  161. }
  162. //Session跨域设置
  163. if(!empty($cfg_domain_cookie))
  164. {
  165. @session_set_cookie_params(0,'/',$cfg_domain_cookie);
  166. }
  167. //php5.1版本以上时区设置
  168. //由于这个函数对于是php5.1以下版本并无意义,因此实际上的时间调用,应该用MyDate函数调用
  169. if(PHP_VERSION > '5.1')
  170. {
  171. $time51 = $cfg_cli_time * -1;
  172. @date_default_timezone_set('Etc/GMT'.$time51);
  173. }
  174. $cfg_isUrlOpen = @ini_get("allow_url_fopen");
  175. //用户访问的网站host
  176. $cfg_clihost = 'http://'.$_SERVER['HTTP_HOST'];
  177. //站点根目录
  178. $cfg_basedir = preg_replace('#'.$cfg_cmspath.'\/include$#i', '', DEDEINC);
  179. if($cfg_multi_site == 'Y')
  180. {
  181. $cfg_mainsite = $cfg_basehost;
  182. }
  183. else
  184. {
  185. $cfg_mainsite = '';
  186. }
  187. //模板的存放目录
  188. $cfg_templets_dir = $cfg_cmspath.'/templets';
  189. $cfg_templeturl = $cfg_mainsite.$cfg_templets_dir;
  190. $cfg_templets_skin = empty($cfg_df_style)? $cfg_mainsite.$cfg_templets_dir."/default" : $cfg_mainsite.$cfg_templets_dir."/$cfg_df_style";
  191. //cms安装目录的网址
  192. $cfg_cmsurl = $cfg_mainsite.$cfg_cmspath;
  193. //插件目录,这个目录是用于存放计数器、投票、评论等程序的必要动态程序
  194. $cfg_plus_dir = $cfg_cmspath.'/plus';
  195. $cfg_phpurl = $cfg_mainsite.$cfg_plus_dir;
  196. $cfg_static_dir = $cfg_cmspath.'/static';
  197. $cfg_staticurl = $cfg_mainsite.$cfg_static_dir;
  198. $cfg_mobile_dir = $cfg_cmspath.'/m';
  199. $cfg_mobileurl = $cfg_mainsite.$cfg_mobile_dir;
  200. $cfg_data_dir = $cfg_cmspath.'/data';
  201. $cfg_dataurl = $cfg_mainsite.$cfg_data_dir;
  202. //会员目录
  203. $cfg_member_dir = $cfg_cmspath.'/member';
  204. $cfg_memberurl = $cfg_mainsite.$cfg_member_dir;
  205. //专题列表的存放路径
  206. $cfg_special = $cfg_cmspath.'/special';
  207. $cfg_specialurl = $cfg_mainsite.$cfg_special;
  208. //附件目录
  209. $cfg_medias_dir = $cfg_cmspath.$cfg_medias_dir;
  210. $cfg_mediasurl = $cfg_mainsite.$cfg_medias_dir;
  211. //上传的普通图片的路径,建议按默认
  212. $cfg_image_dir = $cfg_medias_dir.'/allimg';
  213. //上传的缩略图
  214. $ddcfg_image_dir = $cfg_medias_dir.'/litimg';
  215. //用户投稿图片存放目录
  216. $cfg_user_dir = $cfg_medias_dir.'/userup';
  217. //上传的软件目录
  218. $cfg_soft_dir = $cfg_medias_dir.'/soft';
  219. //上传的多媒体文件目录
  220. $cfg_other_medias = $cfg_medias_dir.'/media';
  221. //软件摘要信息,****请不要删除本项**** 否则系统无法正确接收系统漏洞或升级信息
  222. $cfg_version = 'V6_UTF8';
  223. $cfg_soft_lang = 'utf-8';
  224. $cfg_soft_public = 'base';
  225. $cfg_softname = '织梦内容管理系统';
  226. $cfg_soft_enname = 'DedeCMS';
  227. $cfg_soft_devteam = 'DedeCMS官方团队';
  228. //文档的默认命名规则
  229. $art_shortname = $cfg_df_ext = '.html';
  230. $cfg_df_namerule = '{typedir}/{Y}/{M}{D}/{aid}'.$cfg_df_ext;
  231. //新建目录的权限,如果你使用别的属性,本程不保证程序能顺利在Linux或Unix系统运行
  232. if(isset($cfg_ftp_mkdir) && $cfg_ftp_mkdir=='Y')
  233. {
  234. $cfg_dir_purview = '0755';
  235. }
  236. else
  237. {
  238. $cfg_dir_purview = 0755;
  239. }
  240. //会员是否使用精简模式(已禁用)
  241. $cfg_mb_lit = 'N';
  242. //特殊全局变量
  243. $_sys_globals['curfile'] = '';
  244. $_sys_globals['typeid'] = 0;
  245. $_sys_globals['typename'] = '';
  246. $_sys_globals['aid'] = 0;
  247. if(empty($cfg_addon_savetype))
  248. {
  249. $cfg_addon_savetype = 'Ymd';
  250. }
  251. if($cfg_sendmail_bysmtp=='Y' && !empty($cfg_smtp_usermail))
  252. {
  253. $cfg_adminemail = $cfg_smtp_usermail;
  254. }
  255. //对全局分页传递参数进行过滤
  256. if (isset($GLOBALS['PageNo'])) {
  257. $GLOBALS['PageNo'] = intval($GLOBALS['PageNo']);
  258. }
  259. if (isset($GLOBALS['TotalResult'])) {
  260. $GLOBALS['TotalResult'] = intval($GLOBALS['TotalResult']);
  261. }
  262. // ------------------------------------------------------------------------
  263. // 设定缓存配置信息
  264. if ($cfg_memcache_enable == 'Y')
  265. {
  266. $cache_helper_config = array();
  267. $cache_helper_config['memcache']['is_mc_enable'] = $GLOBALS["cfg_memcache_enable"];
  268. $cache_helper_config['memcache']['mc'] = array (
  269. 'default' => $GLOBALS["cfg_memcache_mc_defa"],
  270. 'other' => $GLOBALS["cfg_memcache_mc_oth"]
  271. );
  272. $cache_helper_config['memcache']['mc_cache_time'] = $GLOBALS["cfg_puccache_time"];
  273. }
  274. if(!isset($cfg_NotPrintHead)) {
  275. header("Content-Type: text/html; charset={$cfg_soft_lang}");
  276. }
  277. //自动加载类库处理
  278. if (version_compare(PHP_VERSION, '7.2.0', '>='))
  279. {
  280. require_once(DEDEINC.'/autoload7.inc.php');
  281. } else {
  282. require_once(DEDEINC.'/autoload.inc.php');
  283. }
  284. $cfg_biz_helpUrl = DEDEBIZURL."/help";
  285. $cfg_biz_gitUrl = DEDEBIZURL."/git";
  286. $cfg_biz_dedebizUrl = DEDEBIZURL;
  287. //引入数据库类
  288. if ( $GLOBALS['cfg_dbtype'] =='mysql' )
  289. {
  290. if ($GLOBALS['cfg_mysql_type'] == 'mysqli' && function_exists("mysqli_init") || !function_exists('mysql_connect'))
  291. {
  292. require_once(DEDEINC.'/dedesqli.class.php');
  293. } else {
  294. require_once(DEDEINC.'/dedesql.class.php');
  295. }
  296. } else {
  297. require_once(DEDEINC.'/dedesqlite.class.php');
  298. }
  299. //全局常用函数
  300. require_once(DEDEINC.'/common.func.php');
  301. // 模块MVC框架需要的控制器和模型基类
  302. require_once(DEDEINC.'/control.class.php');
  303. require_once(DEDEINC.'/model.class.php');
  304. //全局常用函数
  305. require_once(DEDEINC.'/dedebiz.class.php');
  306. //载入小助手配置,并对其进行默认初始化
  307. if(file_exists(DEDEDATA.'/helper.inc.php'))
  308. {
  309. require_once(DEDEDATA.'/helper.inc.php');
  310. // 若没有载入配置,则初始化一个默认小助手配置
  311. if (!isset($cfg_helper_autoload))
  312. {
  313. $cfg_helper_autoload = array('util', 'charset', 'string', 'time', 'cookie');
  314. }
  315. // 初始化小助手
  316. helper($cfg_helper_autoload);
  317. }