Uchome1.2 1.5 代码学习 common.php


Posted in PHP onApril 24, 2009

UCHOME的代码还是很不错的,学习一下!

<?php 
/** 
* 定义一些常量 
*/ 
@define('IN_UCHOME', TRUE); //据说可以防止文件非法包含 
define('X_VER', '1.2'); //Uchome版本 
define('X_RELEASE', '20080612');//发布日期 
define('D_BUG', '0'); //是否开启调试功能, 0:关闭, 1:开启 
//根据是否开启调试功能设置错误报告级别 
D_BUG?error_reporting(7):error_reporting(0); 
//初始化一些全局变量 
$_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $space = array(); 
//定义程序目录常量 
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR); 
//获取时间,主要用于输出程序运行时间 
$mtime = explode(' ', microtime()); 
$_SGLOBAL['timestamp'] = $mtime[1]; 
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0]; 
//基本文件,尝试包含基本配置文件,如果包含不成功,则安装程序 
if(!@include_once(S_ROOT.'./config.php')) { 
header("Location: install/index.php"); 
exit(); 
} 
//包含公用函数库 
include_once(S_ROOT.'./source/function_common.php'); 
//链接数据库 
dbconnect(); 
//配置文件,尝试包含缓存目录中的网站配置信息,如果不成功,则包含进缓存处理函数库并生成配置缓存 
if(!@include_once(S_ROOT.'./data/data_config.php')) { 
include_once(S_ROOT.'./source/function_cache.php'); 
config_cache(); 
} 
//强制使用字符集 
if($_SCONFIG['headercharset']) { 
@header('Content-Type: text/html; charset='.$_SC['charset']); 
} 
//GPC过滤,自动转义$_GET,$_POST,$_COOKIE中的特殊字符,防止SQL注入攻击 
$magic_quote = get_magic_quotes_gpc(); 
if(emptyempty($magic_quote)) { 
$_GET = saddslashes($_GET); 
$_POST = saddslashes($_POST); 
} 
//COOKIE 
$prelength = strlen($_SC['cookiepre']); 
foreach($_COOKIE as $key => $val) { 
if(substr($key, 0, $prelength) == $_SC['cookiepre']) { 
$_SCOOKIE[(substr($key, $prelength))] = emptyempty($magic_quote) ? saddslashes($val) : $val; 
} 
} 
//启用GIP 
if ($_SC['gzipcompress'] && function_exists('ob_gzhandler')) { 
ob_start('ob_gzhandler'); 
} else { 
ob_start(); 
} 
//初始化 
$_SGLOBAL['supe_uid'] = 0; 
$_SGLOBAL['supe_username'] = ''; 
$_SGLOBAL['inajax'] = emptyempty($_GET['inajax'])?0:intval($_GET['inajax']); 
$_SGLOBAL['ajaxmenuid'] = emptyempty($_GET['ajaxmenuid'])?'':$_GET['ajaxmenuid']; 
$_SGLOBAL['refer'] = emptyempty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER']; 
//获取用户信息 
getuser(); 
//应用列表 
@include_once(S_ROOT.'./data/data_app.php'); 
if(emptyempty($_SGLOBAL['app'])) { 
include_once(S_ROOT.'./source/function_cache.php'); 
app_cache(); 
} 
?> 
<?php 
/** 
* 定义一些常量 
*/ 
@define('IN_UCHOME', TRUE); //据说可以防止文件非法包含 
define('X_VER', '1.2'); //Uchome版本 
define('X_RELEASE', '20080612');//发布日期 
define('D_BUG', '0'); //是否开启调试功能, 0:关闭, 1:开启 
//根据是否开启调试功能设置错误报告级别 
D_BUG?error_reporting(7):error_reporting(0); 
//初始化一些全局变量 
$_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $space = array(); 
//定义程序目录常量 
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR); 
//获取时间,主要用于输出程序运行时间 
$mtime = explode(' ', microtime()); 
$_SGLOBAL['timestamp'] = $mtime[1]; 
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0]; 
//基本文件,尝试包含基本配置文件,如果包含不成功,则安装程序 
if(!@include_once(S_ROOT.'./config.php')) { 
header("Location: install/index.php"); 
exit(); 
} 
//包含公用函数库 
include_once(S_ROOT.'./source/function_common.php'); 
//链接数据库 
dbconnect(); 
//配置文件,尝试包含缓存目录中的网站配置信息,如果不成功,则包含进缓存处理函数库并生成配置缓存 
if(!@include_once(S_ROOT.'./data/data_config.php')) { 
include_once(S_ROOT.'./source/function_cache.php'); 
config_cache(); 
} 
//强制使用字符集 
if($_SCONFIG['headercharset']) { 
@header('Content-Type: text/html; charset='.$_SC['charset']); 
} 
//GPC过滤,自动转义$_GET,$_POST,$_COOKIE中的特殊字符,防止SQL注入攻击 
$magic_quote = get_magic_quotes_gpc(); 
if(emptyempty($magic_quote)) { 
$_GET = saddslashes($_GET); 
$_POST = saddslashes($_POST); 
} 
//COOKIE 
$prelength = strlen($_SC['cookiepre']); 
foreach($_COOKIE as $key => $val) { 
if(substr($key, 0, $prelength) == $_SC['cookiepre']) { 
$_SCOOKIE[(substr($key, $prelength))] = emptyempty($magic_quote) ? saddslashes($val) : $val; 
} 
} 
//启用GIP 
if ($_SC['gzipcompress'] && function_exists('ob_gzhandler')) { 
ob_start('ob_gzhandler'); 
} else { 
ob_start(); 
} 
//初始化 
$_SGLOBAL['supe_uid'] = 0; 
$_SGLOBAL['supe_username'] = ''; 
$_SGLOBAL['inajax'] = emptyempty($_GET['inajax'])?0:intval($_GET['inajax']); 
$_SGLOBAL['ajaxmenuid'] = emptyempty($_GET['ajaxmenuid'])?'':$_GET['ajaxmenuid']; 
$_SGLOBAL['refer'] = emptyempty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER']; 
//获取用户信息 
getuser(); 
//应用列表 
@include_once(S_ROOT.'./data/data_app.php'); 
if(emptyempty($_SGLOBAL['app'])) { 
include_once(S_ROOT.'./source/function_cache.php'); 
app_cache(); 
} 
?>

下面是1.5版本的common.php
<?php 
/* 
[UCenter Home] (C) 2007-2008 Comsenz Inc. 
$Id: common.php 10981 2009-01-14 03:05:20Z liguode $ 
*/ 
//定义一个常量,用来在其他页面中,防止被恶意用户直接调用其他PHP文件。 
@define('IN_UCHOME', TRUE); 
//定义一个常量,这个常量表示版本号 
define('X_VER', '1.5'); 
//这个也是一个常量,次版本号 
define('X_RELEASE', '20090114'); 
/*定义程序的调试模式,在我们调试程序的时候将常量值设为1,这样程序出错的时候会在页面显示错误信息。 
在调试完毕正常投入使用后设为0,这样程序出错不会显示给用户。 
*/ 
define('D_BUG', '0'); 
//通过D_BUG常量值指定错误报告类型。其中error_reporting()的参数是错误报告类型,相关参数可查询PHP手册 
D_BUG?error_reporting(7):error_reporting(0); 
//这下面都是定义的全局变量。具体的会在后面使用的时候一一介绍 
$_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $_SN = $space = array(); 
//定义程序目录常量。其中DIRECTORY_SEPARATOR是路径分隔符,linux上就是'/' windows上是'\' 
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR); 
//加载基本的配置文件,用了@符号,达到找不到该文件时在页面不提示错误信息 
if(!@include_once(S_ROOT.'./config.php')) { 
//如果找不到的话则重定向到安装文件 
header("Location: install/index.php"); 
exit(); 
} 
//通用函数文件,具体函数在介绍时间会一一解释 
include_once(S_ROOT.'./source/function_common.php'); 
//时间microtime()获取含毫秒的时间 
$mtime = explode(' ', microtime()); 
$_SGLOBAL['timestamp'] = $mtime[1]; 
//$mtime[0]为UNIX时间戳(整形), $mtime[0]为毫秒 
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0]; 
//get_magic_quotes_gpc检测PHP.INI配置中的魔术引号功能是否打开 
$magic_quote = get_magic_quotes_gpc(); 
if(emptyempty($magic_quote)) { 
//如果自动过滤每打开,则对传入的参数进行转义 
$_GET = saddslashes($_GET); 
$_POST = saddslashes($_POST); 
} 
//货主站点的URL,其中getsiteurl()是用来获取当前站点的域名 
if(emptyempty($_SC['siteurl'])) $_SC['siteurl'] = getsiteurl(); 
//链接数据库 
dbconnect(); 
//打开缓存文件 
foreach (array('config', 'app', 'userapp', 'ad') as $value) { 
if(!@include_once(S_ROOT.'./data/data_'.$value.'.php')) { 
//如果缓存文件打开失败重建缓存,function_cache.php是包含建立缓存的函数文件 
include_once(S_ROOT.'./source/function_cache.php'); 
$cache_func = $value.'_cache'; 
//调用相应的函数来生成缓存。 
$cache_func(); 
} 
} 
//获取COOKIE前缀的长度,$_SC['cookiepre']是在config.php中定义的COOKIE函数的前缀名称,$_COOKIE是存放COOKIE的数据全局变量数组 
$prelength = strlen($_SC['cookiepre']); 
foreach($_COOKIE as $key => $val) { 
//判断当前域名下的COOKIE中属于UCHome的COOKIE 
if(substr($key, 0, $prelength) == $_SC['cookiepre']) { 
//对COOKIE值进行转义 
$_SCOOKIE[(substr($key, $prelength))] = emptyempty($magic_quote) ? saddslashes($val) : $val; 
} 
} 
//是否启用GIP压缩传输,这个是用来提高PHP传输速度的。 
if ($_SC['gzipcompress'] && function_exists('ob_gzhandler')) { 
ob_start('ob_gzhandler'); 
} else { 
ob_start(); 
} 
//初始化 
$_SGLOBAL['supe_uid'] = 0; //初始化当前用户的UID 
$_SGLOBAL['supe_username'] = ''; //初始化当前用户的用户名 
$_SGLOBAL['inajax'] = emptyempty($_GET['inajax'])?0:intval($_GET['inajax']); //这个是用来在页面中控制一些弹出框,在模板篇会介绍 
$_SGLOBAL['ajaxmenuid'] = emptyempty($_GET['ajaxmenuid'])?'':$_GET['ajaxmenuid']; 
$_SGLOBAL['refer'] = emptyempty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER']; //获得上一页的URL,用来跳转 
//登录注册防灌水机 
/* 
在登录或者注册的时候看到形如:do.php?ac=750e45d29d276b2f86f1445627c08f99的链接 
后面的750e45d29d276b2f86f1445627c08f99就是用下面的来获取的。 
*/ 
if(emptyempty($_SCONFIG['login_action'])) $_SCONFIG['login_action'] = md5('login'.md5($_SCONFIG['sitekey'])); 
if(emptyempty($_SCONFIG['register_action'])) $_SCONFIG['register_action'] = md5('register'.md5($_SCONFIG['sitekey'])); 
//整站风格,检查站点模板的路径。此处是default目录,就是我们常用黄色风格的模板路径 
if(emptyempty($_SCONFIG['template'])) { 
$_SCONFIG['template'] = 'default'; 
} 
//在首页由下角可以自行选择风格的实现就是通过这段。 
if($_SCOOKIE['mytemplate']) { 
$_SCOOKIE['mytemplate'] = str_replace('.','',trim($_SCOOKIE['mytemplate'])); 
if(file_exists(S_ROOT.'./template/'.$_SCOOKIE['mytemplate'].'/style.css')) { 
$_SCONFIG['template'] = $_SCOOKIE['mytemplate']; 
} else { 
ssetcookie('mytemplate', ''); 
} 
} 
//处理REQUEST_URI,查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 如为空则为当前页面。 
if(!isset($_SERVER['REQUEST_URI'])) { 
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']; 
if(isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING']; 
} 
//判断用户登录状态 
checkauth(); 
//用户菜单 
getuserapp(); 
//处理UC应用,这个是漫游相关菜单,在此不用解释 
$_SGLOBAL['appmenus'] = $_SGLOBAL['appmenu'] = array(); 
if($_SGLOBAL['app']) { 
foreach ($_SGLOBAL['app'] as $value) { 
if($value['open']) { 
if(emptyempty($_SGLOBAL['appmenu'])) { 
$_SGLOBAL['appmenu'] = $value; 
} else { 
$_SGLOBAL['appmenus'][] = $value; 
} 
} 
} 
} 
?>
PHP 相关文章推荐
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
php去除头尾空格的2种方法
Mar 16 PHP
php常量详细解析
Oct 27 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP 断点续传实例详解
Nov 11 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 #PHP
PHP 危险函数解释 分析
Apr 22 #PHP
php反弹shell实现代码
Apr 22 #PHP
将数组写入txt文件 var_export
Apr 21 #PHP
php 保留小数点
Apr 21 #PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 #PHP
一个php导出oracle库的php代码
Apr 20 #PHP
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
jQuery的一些注意
2006/12/06 Javascript
JavaScript Archive Network 集合
2007/05/12 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python中__slots__用法实例
2015/06/04 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
软件测试有哪些?什么是配置项?
2012/02/12 面试题
区域总监的岗位职责
2013/11/21 职场文书
超市促销活动方案
2014/03/05 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
立志成才演讲稿
2014/09/04 职场文书
幼师小班个人总结
2015/02/12 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
TS 类型兼容教程示例详解
2022/09/23 Javascript