给UCenter代码注解
时间:2008-12-08
来源:互联网
/*
在解释这些代码之前,随便聊一下,希望与大家分享,互相交流:我想阅读代码都有一定方法的,这是我总结的方法:
一:全局方法:在仔细阅读代码之前,先看一下网站结构的布局,了解该网站的基本架构,对接下来的精读有好处。
二:信息流跟踪方式:即从主页(index.php)开始,跟踪信息流径了哪些页面,使用了哪些类,调用了哪些函数。
三:根据效果分析原因:比如说UCenter中的index.php为什么会跳到admin.php页面,然后分析admin.php后面又会带上参数,是因为使用哪个页面的结果。
四:删减法:对弄不明白的地方,进行删除,然后把程序放到服务器中去运行,看会产生什么样的结果。
五:使用一些输出函数:echo() print_r()等。
希望对大家有帮助,也欢迎大家提出意见哦,互相促进。
*/
error_reporting(0); //屏蔽所有错误
set_magic_quotes_runtime(0); //给来自外部的数据(数据库或文本文件)自动转义。
//note 开始时间,使用常量来表示路径,避免出现include()函数所引起的漏洞。
$mtime = explode(' ', microtime());
$starttime = $mtime[1] + $mtime[0];
define('UC_VERSION', '1.0.0');
define('UC_RELEASE', '20080429');
define('IN_UC', TRUE);
define('UC_ROOT', dirname(__FILE__).'/'); //返回路径中的目录部分
define('UC_API', strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/'))).'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')));
define('UC_DATADIR', UC_ROOT.'./data/'); //strpos函数第一次出现的位置。
define('UC_DATAURL', UC_API.'/data');
define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
//note 清除变量,避免变量未初始化漏洞
unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
$_GET = daddslashes($_GET, 1, TRUE);
$_POST = daddslashes($_POST, 1, TRUE);
$_COOKIE = daddslashes($_COOKIE, 1, TRUE);
$_SERVER = daddslashes($_SERVER);
$_FILES = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST, 1, TRUE);
if([email=%21@include]!@include[/email] UC_DATADIR.'config.inc.php') {
exit('The file <b>data/config.inc.php</b> does not exist, perhaps because of UCenter has not been installed, <a href="install/index.php"><b>Please click here to install it.</b></a>.');
}
//加载数据模型基类
require UC_ROOT.'model/base.php';
//获取参数
$m = getgpc('m');
$a = getgpc('a');
if(empty($m) && empty($a)) {
header('Location: admin.php'); //header('location: '.UC_API.'/admin.php?m=user&a=login');在model/admin.php中判断52行。
exit;
}
//作用一:根据参数的不同值加载不同的控制器,作用二:避免出现调用其它文件的漏洞
if(in_array($m, array('app', 'frame', 'user', 'pm', 'pm_client', 'tag', 'feed', 'friend', 'domain', 'credit'))) {
include UC_ROOT."control/$m.php";
$control = new control();
//note 不允许访问私有方法
$method = 'on'.$a;
if(method_exists($control, $method) && $method{0} != '_') {
$control->$method();
} elseif(method_exists($control, '_call')) {
$control->_call('on'.$a, '');
} else {
exit('Action not found!');
}
} else {
exit('Module not found!');
}
//note 结束时间
$mtime = explode(' ', microtime());
$endtime = $mtime[1] + $mtime[0];
//note echo '<script>document.getElementById(\'debug_time\').innerHTML = \''.number_format($endtime - $starttime, 5).'\'</script>'."\n";
function daddslashes($string, $force = 0, $strip = FALSE) {
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force, $strip);
}
} else {
$string = addslashes($strip ? stripslashes($string) : $string);
}
}
return $string;
}
//
function getgpc($k, $var='R') {
switch($var) {
case 'G': $var = &$_GET; break; //引用变量
case 'P': $var = &$_POST; break;
case 'C': $var = &$_COOKIE; break;
case 'R': $var = &$_REQUEST; break;
}
return isset($var[$k]) ? $var[$k] : NULL; //返回变量为$k的值
}
?>[/php]
作者: lyb8010 发布时间: 2008-12-08
作者: 0hudu 发布时间: 2008-12-08
作者: abcnic 发布时间: 2008-12-09
<?php
/*
在解释这些代码之前,随便聊一下,希望与大家分享,互相交流:我想阅读代码都有一定方法的,这是我总结的方法:
一:全局方法:在仔细阅读代码之前,先看一下网站结构的布局,了解该网站的基本架构,对接下来的精读有好处。
二:信息流跟踪方式:即从主页(index.php)开始,跟踪信息流径了哪些页面,使用了哪些类,调用了哪些函数。
三:根据效果分析原因:比如说UCenter中的index.php为什么会跳到admin.php页面,然后分析admin.php后面又会带上参数,是因为使用哪个页面的结果。
四:删减法:对弄不明白的地方,进行删除,然后把程序放到服务器中去运行,看会产生什么样的结果。
五:使用一些输出函数:echo() print_r()等。
希望对大家有帮助,也欢迎大家提出意见哦,互相促进。
*/
error_reporting(0); //屏蔽所有错误
set_magic_quotes_runtime(0); //给来自外部的数据(数据库或文本文件)自动转义。
//note 开始时间,使用常量来表示路径,避免出现include()函数所引起的漏洞。
$mtime = explode(' ', microtime());
$starttime = $mtime[1] + $mtime[0];
define('UC_VERSION', '1.0.0');
define('UC_RELEASE', '20080429');
define('IN_UC', TRUE);
define('UC_ROOT', dirname(__FILE__).'/'); //返回路径中的目录部分
define('UC_API', strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/'))).'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')));
define('UC_DATADIR', UC_ROOT.'./data/'); //strpos函数第一次出现的位置。
define('UC_DATAURL', UC_API.'/data');
define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
//note 清除变量,避免变量未初始化漏洞
unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
$_GET = daddslashes($_GET, 1, TRUE);
$_POST = daddslashes($_POST, 1, TRUE);
$_COOKIE = daddslashes($_COOKIE, 1, TRUE);
$_SERVER = daddslashes($_SERVER);
$_FILES = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST, 1, TRUE);
if([email=!@include]!@include[/email] UC_DATADIR.'config.inc.php') {
exit('The file <b>data/config.inc.php</b> does not exist, perhaps because of UCenter has not been installed, <a href="install/index.php"><b>Please click here to install it.</b></a>.');
}
//加载数据模型基类
require UC_ROOT.'model/base.php';
//获取参数
$m = getgpc('m');
$a = getgpc('a');
if(empty($m) && empty($a)) {
header('Location: admin.php'); //header('location: '.UC_API.'/admin.php?m=user&a=login');在model/admin.php中判断52行。
exit;
}
//作用一:根据参数的不同值加载不同的控制器,作用二:避免出现调用其它文件的漏洞
if(in_array($m, array('app', 'frame', 'user', 'pm', 'pm_client', 'tag', 'feed', 'friend', 'domain', 'credit'))) {
include UC_ROOT."control/$m.php";
$control = new control();
//note 不允许访问私有方法
$method = 'on'.$a;
if(method_exists($control, $method) && $method{0} != '_') {
$control->$method();
} elseif(method_exists($control, '_call')) {
$control->_call('on'.$a, '');
} else {
exit('Action not found!');
}
} else {
exit('Module not found!');
}
//note 结束时间
$mtime = explode(' ', microtime());
$endtime = $mtime[1] + $mtime[0];
//note echo '<script>document.getElementById(\'debug_time\').innerHTML = \''.number_format($endtime - $starttime, 5).'\'</script>'."\n";
function daddslashes($string, $force = 0, $strip = FALSE) {
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force, $strip);
}
} else {
$string = addslashes($strip ? stripslashes($string) : $string);
}
}
return $string;
}
//
function getgpc($k, $var='R') {
switch($var) {
case 'G': $var = &$_GET; break; //引用变量
case 'P': $var = &$_POST; break;
case 'C': $var = &$_COOKIE; break;
case 'R': $var = &$_REQUEST; break;
}
return isset($var[$k]) ? $var[$k] : NULL; //返回变量为$k的值
}
?>
[/php]
作者: anyforever 发布时间: 2008-12-15
作者: linvo 发布时间: 2008-12-15
还有吗?
作者: linvo 发布时间: 2008-12-15
作者: 落叶人生 发布时间: 2009-01-03
作者: sinopf 发布时间: 2009-01-03
还有吗?
作者: 0hudu 发布时间: 2009-01-03
作者: wanchun0222 发布时间: 2009-02-05
作者: hoday 发布时间: 2009-02-07
作者: mapleaflin 发布时间: 2009-02-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28