BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

精华帖子 phpcms2007几个核心文件讲解,新手快顶
首页 » 论坛 » Php »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
  本主题由 HonestQiao 于 2008-8-22 12:44 加入精华 
fan12
光明使者




UID:47293
注册:2003-3-13
最后登录: 2008-08-30
帖子:830
精华:1

可用积分:896 (稍有积蓄)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
1楼 发表于 2008-7-2 18:51 
include/common.inc.php

<?php
/**
    《PHPCMS2007 include/common.inc.php文件分析》
    作者:fan12 (随便崇拜,不介意)
    
    本人为大师级分析,高屋建瓴,
    有想看细节分析的google搜“phpcms 源码分析”,有个叫逆水寒的写了几篇小兵级分析,写得很细,可以参考
    
    phpcms和discuz编码风格差不多,这个common.inc.php文件是几乎所有其他脚本都要包含进去的
    
*/

    

##################################### Section 1 ###################################################

###################################################################################################

/*
  处理时间、超级全局变量、魔术引用、定义‘IN_PHPCMS’防止翻墙
  定义根目录PHPCMS_ROOT、包含/include/global.func.php 函数文件
  定义$search_arr、$replace_arr两个数组变量处理数据库操作
  
  给$_GET,$_POST,$_COOKIE剥皮、转义
  extract $_POST,$_GET以备后用
  unset掉$_POST,$_GET
    
*/


$mtime = explode(' ', microtime());
$phpcms_starttime = $mtime[1] + $mtime[0];
unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS);
set_magic_quotes_runtime(0);
define('IN_PHPCMS', TRUE);
define('PHPCMS_ROOT', str_replace("\\", '/', substr(dirname(__FILE__), 0, -8)));
require PHPCMS_ROOT.'/include/global.func.php';

$search_arr = array("/ union /i","/ select /i","/ update /i","/ outfile /i","/ or /i");
$replace_arr = array(' union ',' select ',' update ',' outfile ',' or ');
$_POST = strip_sql($_POST);
$_GET = strip_sql($_GET);
$_COOKIE = strip_sql($_COOKIE);
unset($search_arr, $replace_arr);

$magic_quotes_gpc = get_magic_quotes_gpc();
if(!$magic_quotes_gpc)
{
    $_POST = new_addslashes($_POST);
    $_GET = new_addslashes($_GET);
}
@extract($_POST, EXTR_OVERWRITE);
@extract($_GET, EXTR_OVERWRITE);
unset($_POST, $_GET);

##################################### Section 2 ###################################################

###################################################################################################



common.inc.rar (3.52 KB)



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
fan12
光明使者




UID:47293
注册:2003-3-13
最后登录: 2008-08-30
帖子:830
精华:1

可用积分:896 (稍有积蓄)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
2楼 发表于 2008-7-2 19:07 
admin.php:

<?php
/**
    《phpcms2007 admin.php脚本分析》
    作者:fan12
    
    phpcms的后台管理最先执行这个脚本,然后根据GET变量mod和file决定include哪个xxx.inc.php,
    再然后在xxx.inc.php里根据GET变量switch($action)决定include哪个xxx.tpl.php模板,显示给用户
    用户再选择点击把新的GET变量mod,file,action,channelid等传到服务器请求admin.php文件,服务器做出响应
    
    比如刚登陆时就include的是index.inc.php文件,index.inc.php根据action的值indlude相应的模板显示给用户
    
    大家在后台管理边点边看本分析
*/


/**
   这个脚本最后基本上都会落到最后一句:
   if(!@include $filepath) showmessage($LANG['illegal_operation']);
   $filepath是个xxx.inc.php脚本,xxx根据$file定,
   然后在xxx.inc.php根据swith($action) include对应的admintpl(xxx) 模板文件
   具体可以到admin/templates/下去一个一个看,别的模块下的/admin/templates/也有
*/


############################################# Section 1 #####################################################

#############################################################################################################

/**
    包含了一堆文件,new了session
    处理GET变量file
    关闭cache开关
    处理所有的传递变量:file,action,job,catid,specialid
    
*/


define('IN_ADMIN', TRUE);
$rootdir = dirname(__FILE__);
require $rootdir.'/admin/include/global.func.php'; //很多admin相关的函数

require $rootdir.'/include/common.inc.php'; //common.inc.php,phpcms的核心文件,干了很多事,很重要,建议详细看看


$session = new phpcms_session(); //通过common.inc.php里包含进来的/include/session_'.$CONFIG['database'].'.class.php实现


require PHPCMS_ROOT.'/languages/'.$CONFIG['adminlanguage'].'/phpcms_admin.lang.php'; //全是$LANG[],操作交互过程的提示信息

require_once PHPCMS_ROOT.'/include/version.inc.php'; //版本信息,就两行

require_once PHPCMS_ROOT.'/include/formselect.func.php'; //很多和选择相关的函数

require_once PHPCMS_ROOT.'/include/cache.func.php'; //缓存函数,去看相应的脚本和讲解

require_once PHPCMS_ROOT.'/include/post.func.php'; //与发布相关的函数,比如关键字设置,作者更新之类的


//其实根据变量命名就可以看出来,$file--意思就是每次请求的都是一个对应的file

if(!isset($file)) $file = 'index'; //如果$file没设,就给设为'index',相对应的代码会处理

preg_match("/^[0-9A-Za-z_]+$/",$file) or showmessage('Invalid Request.'); //防止$file含非法字符


$db->iscache = 0; //$db 在common.inc里已经new了,那里iscache=$CONFIG['dbiscache'],但后台不能cache,所以设为0,给禁掉

$fileiscache = 0;
$filecaching = 0;

$file = isset($file) ? $file : 'login'; //有点多余,好象是为安全性考虑,不过也是初始化的习惯而已

$action = isset($action) ? $action : ''; //$action初始化

$job = isset($job) ? $job : ''; //同上

$catid = isset($catid) ? intval($catid) : 0; //目录id

$specialid = isset($specialid) ? intval($specialid) : 0; //专题id(应该是)


############################################# Section 2 #####################################################

#############################################################################################################

/**
    确定登陆用户的管理员级别$_grade
    记录管理员日志 adminlog()
    根据管理员级别配置相应的模块和权限
*/


admin.rar (2.87 KB)



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
fan12
光明使者




UID:47293
注册:2003-3-13
最后登录: 2008-08-30
帖子:830
精华:1

可用积分:896 (稍有积蓄)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
3楼 发表于 2008-7-2 19:10 
admin/index.inc.php:

<?php
/**
    《phpcms2007 admin/index.inc.php脚本分析》
    作者:fan12
     
   ------------------后台admin首页------------------
    
    admin.php的inc文件,file=index就会include该文件
    然后再通过下面的swith()语句,根据action的值执行相应的操作
*/


############################################# Section 1 #####################################################

#############################################################################################################

/**
    判断是否定义IN_PHPCMS或重定向
    定义showresult()函数
    定义zend_optimizer_version()函数
*/


defined('IN_PHPCMS') or header('location:../admin.php?mod=phpcms&file=index');

function showresult($v)
{
    global $LANG;
    return $v ? '<font color="blue"><b>'.$LANG['yes'].'</b></font>' : '<font color="red"><b>'.$LANG['no'].'</b></font>';
}

if(!function_exists('zend_optimizer_version'))
{
    function zend_optimizer_version()
    {
        ob_start();
        @phpinfo();
        $phpinfo = ob_get_contents();
        ob_end_clean();
        preg_match("/Zend(?: | +?Optimizer(?: | +?v([0-9]+\.[0-9]+\.[0-9]+),/",strip_tags($phpinfo),$info);
        return $info[1];
    }
}

############################################# Section 2 #####################################################

#############################################################################################################

/**
    action的switch()语句,每个case最后都会包含根目录/admin/templates/下的模板文件
    default即index在最下面,执行的是include admintpl('index');
    admintpl()在admin/include/global.func.php里,返回.$module_dir.'/admin/templates/'.$file.'.tpl.php'
    $module_dir为空则直接返回/admin/templates/'.$file.'.tpl.php
    默认即返回admin/templates/index.tpl.php, 该脚本生成了一个框架
    然后框架顶部src="?mod=phpcms&file=index&action=top",也就是还请求admin.php,file还=index,不过action=top
    左框架src="?mod=phpcms&file=index&action=mymenu",
    右框架src="?mod=phpcms&file=index&action=main"
*/


switch($action)


index.inc.rar (3.77 KB)



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
enous
精灵王




UID:655653
注册:2007-12-20
最后登录: 2008-08-22
帖子:329
精华:0

可用积分:133 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
4楼 发表于 2008-7-3 09:10 
沙发啊..
哈.怎么没人顶哪..



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

Yiwu,Yiwu market
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
kts2tt
侠客




UID:700776
注册:2008-5-5
最后登录: 2008-08-28
帖子:13
精华:0

可用积分:12 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
5楼 发表于 2008-7-3 09:17 
恩,顶一下,期待全解。。。



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
sunbo7758
新手




UID:691077
注册:2008-4-13
最后登录: 2008-07-06
帖子:1
精华:0

可用积分:1 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
6楼 发表于 2008-7-3 10:57 
先判断magic_quotes_gpc是否开启
然后set_magic_quotes_runtime用这个关掉对不 菜鸟问



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
傲枭   帅哥
光明使者


CU奥运火炬传递手2008
UID:262168
注册:2005-4-30
最后登录: 2008-08-29
帖子:805
精华:1

可用积分:1467 (家境小康)
信誉积分:105
空间积分:10 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
7楼 发表于 2008-7-3 16:40 
这样的文件说明在phpcms的网站上有吧。记得以前看过。



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
fan12
光明使者




UID:47293
注册:2003-3-13
最后登录: 2008-08-30
帖子:830
精华:1

可用积分:896 (稍有积蓄)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
8楼 发表于 2008-7-3 20:47 



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
fan12
光明使者




UID:47293
注册:2003-3-13
最后登录: 2008-08-30
帖子:830
精华:1

可用积分:896 (稍有积蓄)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
9楼 发表于 2008-7-3 20:50 
回复 #8 fan12 的帖子

快顶,顶满100从需求分析,设计模式,架构,性能分析,用户体验方面给大家写一CMMI5级的分析出来



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
caimaotan
新手




UID:731807
注册:2008-7-18
最后登录: 2008-07-18
帖子:1
精华:0

可用积分:2 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
10楼 发表于 2008-7-18 15:17 
请求帮助
登录后台后出现以下错误提示:
Warning: main(e:/wwwroot/caimaotan/web/include/session_mysql.class.php): failed to open stream: No such file or directory in e:\wwwroot\caimaotan\web\include\common.inc.php on line 89

Warning: main(e:/wwwroot/caimaotan/web/include/session_mysql.class.php): failed to open stream: No such file or directory in e:\wwwroot\caimaotan\web\include\common.inc.php on line 89





89行内容:   require PHPCMS_ROOT.'/include/session_'.$CONFIG['database'].'.class.php';


请求帮助:  QQ 89679128

[ 本帖最后由 caimaotan 于 2008-7-18 15:21 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » Php »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.068513 second(s), 6 queries , Gzip enabled