ucenter的代码
时间:2010-02-04 来源:lengyuzlg
最近在读ucenter的代码,有没有一起的朋友?(附一段已注解代码)
注:本人刚学了PHP三个月,所以现在注解很详细,几乎是一句一个注解,麻烦高手们看了不要笑如果理解错误了就帮指下,如果有一起研究的 可以加我QQ 503056960 如果只想看看代码而没计划自己研究的可以加 QQ群 74298047 谢谢各位
研究是从安装目录开始 install/ index.php
<?php
/*
本代码下载时间为2008年12月25日 14:27 为本时段最新版本
*/
error_reporting(E_ERROR | E_WARNING | E_PARSE);
/*
设置php的错误报告级别,也就是设置php显示哪些错误,
error_reporting可以设置的参数如下:
; 错误报告是位字段。可以将数字加起来得到想要的错误报告等级。
; E_ALL - 所有的错误和警告(不包括 E_STRICT)
; E_ERROR - 致命性的运行时错误
; E_WARNING - 运行时警告(非致命性错误)
; E_PARSE - 编译时解析错误
; E_NOTICE - 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
; E_STRICT - 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
; E_CORE_ERROR - PHP启动时初始化过程中的致命错误
; E_CORE_WARNING - PHP启动时初始化过程中的警告(非致命性错)
; E_COMPILE_ERROR - 编译时致命性错
; E_COMPILE_WARNING - 编译时警告(非致命性错)
; E_USER_ERROR - 用户自定义的错误消息
; E_USER_WARNING - 用户自定义的警告消息
; E_USER_NOTICE - 用户自定义的提醒消息
; 例子:
;error_reporting = E_ALL & ~E_NOTICE ; 显示所有的错误,除了提醒
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; 仅显示错误
*/
@set_time_limit(1000);
//这里设置该程序最长执行时间为1000秒,超过后提示过期
set_magic_quotes_runtime(0);
/*此函数来修改PHP.ini文件中的 magic_quotes_runtime 变量的状态,如果想获得magic_quotes_runtime 变量的状态用get_magic_quotes_runtime这个函数如果返回0表示本功能被关闭,如果返回1表示本功能已经开启。 magic_quotes_runtime的功能是当它被开启的时候所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。比如: 用户向数据库提交的数据中含有\" '这些符号的时候它就会在这些符号的前面自动加上“\”转义符。
可为什么要把这个关闭呢?猜测是为了在安装的时候从文件内读取数据不被改变,这个思想下安装完后程序部分要把他改过来的
*/
define('IN_COMSENZ', TRUE);
//这里把这个定义了放到 lang.inc.php 和func.inc.php 头部检查,如果没被定义,那么就不执行他页面的内容
define('ROOT_PATH', dirname(__FILE__).'/../');
// dirname(__FILE__).'/../' 为安装目录 这样下面的 就可能是 c:/www/../install/var.inc.php
require ROOT_PATH.'./install/var.inc.php';
require ROOT_PATH.'./install/lang.inc.php';
require ROOT_PATH.'./install/db.class.php';
require ROOT_PATH.'./install/func.inc.php';
file_exists(ROOT_PATH.'./install/extvar.inc.php') && require ROOT_PATH.'./install/extvar.inc.php';
//file_exists(path) path 必需。规定要检查的路径。 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。这里判断该文件是否存在 并且包含进来包含成功,感觉有点小别扭
$view_off = getgpc('view_off');
/*getgpc() 为自定义函数 在文件 func.inc.php 内,该函数作用是把这个值判断成 $a = $_POST['$a'],判断:这个函数的作用目前还搞不懂,下面的常量赋值和这个直接相关了
估计这里的 $view_off 变量的作用是判断安装程序是不是已经安装过了,同时下面的常量作用就很明显了,如果变量$view_off被赋值了,那么就是安装过了,就把常量 VIEW_OFF 赋值 为TRUE,那么就不安装了
*/
define('VIEW_OFF', $view_off ? TRUE : FALSE);
// 给常量赋值,并做了一次判断
$allow_method = array('show_license', 'env_check', 'db_init', 'ext_info', 'install_check', 'tablepre_check');
//这个数组内容是安装步骤
$step = intval(getgpc('step', 'R')) ? intval(getgpc('step', 'R')) : 0;
/* 安装到第几步的判断,这里的 intval() 函数 可以把任意其他类型的数值转换成整型 经常使用intval() 函数来对url上传来的id号转化成整型来保证不会有黑客来传递字符串.但intval() 只能处理2的31次方(也就是=2147483648)以内的数,大于这个数字将出现错误!pow(x,y)函数返回 x 的 y 次方。
这里相当于 $step= $_POST['$step']
*/
$method = getgpc('method');
//这里 相当于 $method= $_POST['method']; 初次安装很确定是空了
if(empty($method) || !in_array($method, $allow_method)) {
$method = isset($allow_method[$step]) ? $allow_method[$step] : '';
}
/*
先判断$method不存在 或是存在但不在数组 $allow_method 里就把$method 赋值一个步骤编号 比如$menthod = 'show_license'
bool empty ( mixed var )
功能:检查一个变量是否为空
返回值:
若变量不存在则返回 TRUE
若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 FALSE
empty() 只能用于变量,检测任何非变量的东西都将导致解析错误而终止运行。检测常量是否已设置可使用 defined() 函数。
in_array() 函数在数组中搜索给定的值。
语法
in_array(value,array,type)参数 描述
value 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
说明
如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。
如果没有在数组中找到参数,函数返回 false。
注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。
*/
if(empty($method)) {
show_msg('method_undefined', $method, 0);
}
// 如果$method 为空,那么
if(!ini_get('short_open_tag')) {
show_msg('short_open_tag_invalid', '', 0);
//读取看服务器上的short_open_tag有没有打开,如果没有,就提示错误
} elseif(file_exists($lockfile)) {
show_msg('install_locked', '', 0);
//看看变量 $lockfile 对应的文件存在不存在,如果存在,则提示信息
} elseif(!class_exists('dbstuff')) {
show_msg('database_nonexistence', '', 0);
相关阅读 更多 +