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 相关文章推荐
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php操作mysqli(示例代码)
Oct 28 PHP
php实现的日历程序
Jun 18 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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
菜鸟学PHP之Smarty入门
2007/01/04 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
如何在PHP中使用数组
2020/06/09 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
keras中的History对象用法
2020/06/19 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
2015年五四青年节演讲稿
2015/03/18 职场文书
防汛通知
2015/04/25 职场文书
美丽的大脚观后感
2015/06/03 职场文书
民主生活会意见
2015/06/05 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript
css3新特性的应用示例分析
2022/03/16 HTML / CSS