喜悦国际村 
» 游客:  注册 | 登录 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

【北京】--【低薪】-【诚聘】--- 高级PHP工程师,WEB前台开发工程师

上一主题 下一主题
 18  1/2  1  2  > 
     
标题: [原创] dedecms代码分析  
 
jingangel
中级会员
Rank: 3Rank: 3


UID 72698
精华 0
积分 345
帖子 227
金钱 345 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-5-2
来自 山西
状态 离线
dedecms代码分析

大家好,我有个提议大家不知道赞不赞同,
大家可以共同来分析dedecms的代码,
然后选一个最好的,专贴发布,

我先挑战自己,试着分析

<?php 
//:index.php
//:如果config_base.php文章不存在,则程序没有安装,提示安装链接
if(!is_file(dirname(__FILE__)."/include/config_base.php")){
  echo 
"<meta http-equiv=content-type content='text/html; charset=gb2312'>rn";
  echo 
"·如果你还没安装本程序,请运行<a href='install/index.php'> install/index.php 进入安装&gt;&gt; </a><br/><br/>";
  echo 
"&nbsp;&nbsp;<a href='http://www.dedecms.com' style='font-size:12px' target='_blank'>Power by DedeCms OX V5.0 2008版 &nbsp;织梦内容管理系统</a>";
  exit();
}

/*:包含config_base.php(环境定义文件。用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改。),inc_arcpart_view.php(用于解析和创建全局性质的模板,如频道封面,主页,单个页面等)
*/
require_once(dirname(__FILE__)."/include/config_base.php");
require_once(
dirname(__FILE__)."/include/inc_arcpart_view.php");

//:创建数据库调用实例
$dsql = new DedeSql(-100);
//:从数据库的dede_homepageset表中,查询一条记录,表中记录的是主页的路径和主页模板的路径
$row  $dsql->GetOne("Select * From #@__homepageset");
//:关闭数据库连接
$dsql->Close();
//:此句应该是替换模板,在$row['templet'](主面模板的路径)中查找{style},替换为$cfg_df_style
$row['templet'] = str_replace("{style}",$cfg_df_style,$row['templet']);
//:创建 解析和创建全局性质的模板 的实例
$pv = new PartView();
//:设置要解析的模板  网站目录/模板目录/(主面模板的路径)
$pv->SetTemplet($cfg_basedir."/".$cfg_templets_dir."/".$row['templet']);
//:显示内容
$pv->Display();
$pv->Close();
//ookk
?>
[ 本帖最后由 jingangel 于 2008-3-11 11:24 AM 编辑 ]




http://www.zshome.net.cn/昨天刚上线
2008-3-11 11:21 AM#1
查看资料  Blog  发短消息  QQ  顶部
 
jingangel
中级会员
Rank: 3Rank: 3


UID 72698
精华 0
积分 345
帖子 227
金钱 345 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-5-2
来自 山西
状态 离线
[推荐阅读] 页面显示乱码
dede本来的源码中已经有很多的注释了,
自己的用的是//:

<?php 
//:config_base.php
/*************************************************
本文件的信息不建议用户自行更改,否则发生意外自行负责
**************************************************/
//:显示除去 E_NOTICE 之外的所有错误信息
error_reporting(E_ALL & ~E_NOTICE);

/*:定义常量
dirname -- 返回路径中的目录部分  __FILE__ 是当前路径+文件名
dirname(__FILE__)返回当前文件路径的路径部分
*/

define('DEDEINC',dirname(__FILE__));

//:禁止用户提交某些特殊变量 (这块希望高手仔细分析用途)
$ckvs = Array('_GET','_POST','_COOKIE','_FILES');
$ckvs4 = Array('HTTP_GET_VARS','HTTP_POST_VARS','HTTP_COOKIE_VARS','HTTP_POST_FILES');

//PHP小于4.1版本的兼容性处理
$phpold 0;
foreach(
$ckvs4 as $_k=>$_v){ 
    if(!@
is_array(${$_v})) continue;
    if(!@
is_array(${$ckvs[$_k]})){ 
        ${
$ckvs[$_k]} = ${$_v}; unset(${$_v}); $phpold=1;
    }
}
//全局安全检测
foreach($ckvs as $ckv){
   foreach($
$ckv AS $_k => $_v){ 
     
//: 如果用户提交的变量中有cfg_或globals等全局或系统变量,则注销
      
if(eregi("^(globals|cfg_)",$_k)) unset(${$ckv}[$_k]);
   }
}

//检测上传的文件中是否有危险代码,有直接退出处理
if( !isset($cfg_NoUploadSafeCheck) ){
if (
is_array($_FILES)) {
 foreach(
$_FILES AS $_name => $_value){
    ${
$_name} = $_value['tmp_name'];
    
$_fp = @fopen(${$_name},'r');
    
$_fstr = @fread($_fp,filesize(${$_name}));
    @
fclose($_fp);
   
//: 如果文件中有<?,<%,则退出
    
if($_fstr!='' && ereg("<(?|%)",$_fstr)){
       echo 
"你上传的文件中含有危险内容,程序终止处理!";
       exit();
    }
 }
}}

//载入用户配置的系统变量
require_once(DEDEINC."/config_hand.php");

//设置站点维护状态开启后,程序文件最上方有 $cfg_IsCanView=true; 则该程序仍访问
if(!isset($cfg_IsCanView)) $cfg_IsCanView false;
if(isset(
$cfg_websafe_open) && $cfg_websafe_open=='Y' && !$cfg_IsCanView){
    include(
DEDEINC.'/alert.htm');
    exit();
}

//php5.1版本以上时区设置
if(!ereg("[^0-9-]",$cfg_cli_time)) $cfg_cli_time 'Etc/GMT'.$cfg_cli_time;
function_exists('date_default_timezone_set') ? @date_default_timezone_set($cfg_cli_time) : '';

if(!isset(
$cfg_needFilter)) $cfg_needFilter false;
$cfg_isUrlOpen = @ini_get("allow_url_fopen");

//安全模式检测
$cfg_isSafeMode = @ini_get("safe_mode");
if(
$cfg_isSafeMode){
    
$cfg_os = (isset($_ENV['OS']) ? strtolower($_ENV['OS']) : '');
    if(
$cfg_os=='windows_nt'$cfg_isSafeMode false;
}

if(
$phpold==1){ //低版本强制检查变量
    
$cfg_isMagic false;
    
$cfg_registerGlobals false;
}else{
    
$cfg_registerGlobals = @ini_get("register_globals");
                     
//: ini_get()取得一些配置选项
                     
$cfg_isMagic = @ini_get("magic_quotes_gpc");
}

//检测系统是否注册外部变量
if(!$cfg_isMagic) require_once(DEDEINC."/config_rglobals_magic.php");
else if(!
$cfg_registerGlobals || $cfg_needFilter) require_once(DEDEINC."/config_rglobals.php");

//Session保存路径
$sessSavePath DEDEINC."/../data/sessions/";
if(
is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }

//对于仅需要简单SQL操作的页面,引入本文件前把此$__ONLYDB设为true,可避免引入不必要的文件
if(!isset($__ONLYDB)) $__ONLYDB false;
if(!isset(
$__ONLYCONFIG)) $__ONLYCONFIG false;

//站点根目录
//$cfg_basedir = str_replace("\","/",substr(DEDEINC,0,-8));
$ndir str_replace("\","/",dirname(__FILE__));
$cfg_basedir = eregi_replace($cfg_cmspath."
/include[/]{0,1}$","",$ndir);
if($cfg_multi_site == 'Y') $cfg_mainsite = $cfg_basehost;
else  $cfg_mainsite = "";

//数据库连接信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'believecn';
$cfg_dbuser = 'root';
$cfg_dbpwd = '000000';
$cfg_dbprefix = 'cn_';
$cfg_db_language = 'gbk';

//模板的存放目录
$cfg_templets_dir = $cfg_cmspath.'/templets';
$cfg_templeturl = $cfg_mainsite.$cfg_templets_dir;

//插件目录,这个目录是用于存放计数器、投票、评论等程序的必要动态程序
$cfg_plus_dir = $cfg_cmspath.'/plus';
$cfg_phpurl = $cfg_mainsite.$cfg_plus_dir;

//会员目录
$cfg_member_dir = $cfg_cmspath.'/member';
$cfg_memberurl = $cfg_mainsite.$cfg_member_dir;

//会员个人空间目录#new
$cfg_space_dir = $cfg_cmspath.'/space';
$cfg_spaceurl = $cfg_basehost.$cfg_space_dir;

$cfg_medias_dir = $cfg_cmspath.$cfg_medias_dir;
//上传的普通图片的路径,建议按默认
$cfg_image_dir = $cfg_medias_dir.'/allimg';
//上传的缩略图
$ddcfg_image_dir = $cfg_medias_dir.'/litimg';
//专题列表的存放路径
$cfg_special = $cfg_cmspath.'/special';
//用户投稿图片存放目录
$cfg_user_dir = $cfg_medias_dir.'/userup';
//上传的软件目录
$cfg_soft_dir = $cfg_medias_dir.'/soft';
//上传的多媒体文件目录
$cfg_other_medias = $cfg_medias_dir.'/media';
//圈子目录
$cfg_group_path = $cfg_cmspath.'/group';
//书库目录
$cfg_book_path = $cfg_cmspath.'/book';
//问答模块目录
$cfg_ask_path = $cfg_cmspath.'/ask';
//圈子网址
$cfg_group_url = $cfg_mainsite.$cfg_group_path;
//书库网址
$cfg_book_url = $cfg_mainsite.$cfg_book_path;
//问答模块网址
$cfg_ask_url = $cfg_mainsite.$cfg_ask_path;

//软件摘要信息,****请不要删除本项**** 否则系统无法正确接收系统漏洞或升级信息
//-----------------------------
$cfg_softname = "
织梦内容管理系统";
$cfg_soft_enname = "
DedeCms V5 2008版";
$cfg_soft_devteam = "
织梦团队";
$cfg_version = '5_0_1_GBK';

//默认扩展名,仅在命名规则不含扩展名的时候调用
$art_shortname = '.html';
//文档的默认命名规则
$cfg_df_namerule = '{typedir}/{Y}/{M}{D}/{aid}.html';
//新建目录的权限,如果你使用别的属性,本程不保证程序能顺利在Linux或Unix系统运行
$cfg_dir_purview = 0755;

//引入数据库类和常用函数
require_once(DEDEINC.'/config_passport.php');

//:用于操作数据库
if(!$__ONLYCONFIG) include_once(DEDEINC.'/pub_db_mysql.php');
//:可供用户使用的函数集合
if(!$__ONLYDB) include_once(DEDEINC.'/inc_functions.php');
?>
[ 本帖最后由 jingangel 于 2008-3-11 03:00 PM 编辑 ]




http://www.zshome.net.cn/昨天刚上线
2008-3-11 11:38 AM#2
查看资料  Blog  发短消息  QQ  顶部
 
yzxh24
新手上路
Rank: 1



UID 79352
精华 0
积分 22
帖子 15
金钱 22 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-8-31
状态 离线
[推荐阅读] 我写的分页类(支持POST)
dede的代码写的太乱了,不好读!
2008-3-11 01:12 PM#3
查看资料  发短消息  QQ  顶部
 
lyhiving (lyhiving)
新手上路
Rank: 1
初级会员



UID 29173
精华 0
积分 47
帖子 79
金钱 47 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-6-5
状态 离线
[推荐阅读] DBA-MYSQL


QUOTE:
原帖由 yzxh24 于 2008-3-11 01:12 PM 发表
dede的代码写的太乱了,不好读!
同解
2008-3-11 01:35 PM#4
查看资料  发短消息  顶部
 
xanxin
新手上路
Rank: 1



UID 111948
精华 0
积分 1
帖子 1
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2008-2-28
状态 离线
[推荐阅读] 为什么在linux下配置lamp的时候要安装GCC和LIBXML?
不错!good
2008-3-11 01:54 PM#5
查看资料  发短消息  顶部
 
coolcool1265
新手上路
Rank: 1


UID 100974
精华 0
积分 17
帖子 13
金钱 17 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-9
状态 离线
[推荐阅读] 请帮我理解正则:^([^<]*)(<[^>]+>[^<]*)*$
不过,dedecms号称是  cms的最好系统

我也再用它,只是还没有太长时间



高手们不妨来试着看看,

它是 柏拉图 一个人编写的

真可谓是 强人啊!
2008-3-16 10:22 PM#6
查看资料  发短消息  顶部
 
boneguan (boneguan)
新手上路
Rank: 1
初级会员



UID 31252
精华 0
积分 28
帖子 40
金钱 28 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-9-20
状态 离线
[推荐阅读] 请问为什么我这个单击换图片的代码不起作用?
我改过它的系统,增加了个批量上传图片功能,但没怎么深研。 不过里面结构还算清晰。但还是做个简单的批量功能,比用自己的框架 多了3倍的时间
2008-3-19 02:53 PM#7
查看资料  发短消息  顶部
 
wleige (一天到晚游泳的鱼)
高级会员
Rank: 4
中级会员


UID 64348
精华 0
积分 580
帖子 590
金钱 580 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-5-25
来自 周口人在上海
状态 离线
[推荐阅读] 华奥永通网络科技(北京)有限公司高薪诚聘 PHP程序员
修改起来相当麻烦



有勇气来改变可以改变的事情,有胸怀来接受不可改变的事情,有智慧来分辨两者的不同。http://www.featuredbride.com
2008-3-19 03:50 PM#8
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
306655152
新手上路
Rank: 1



UID 79336
精华 0
积分 45
帖子 91
金钱 45 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-8-31
来自 哈尔滨
状态 离线
[推荐阅读] 赛美特传媒招聘PHP工程师2-3名
dede...



欢迎来做客www.bbsfine.net
2008-3-20 09:01 PM#9
查看资料  发短消息  QQ  顶部
 
剑枫 (雪花)
论坛元老
Rank: 8Rank: 8
欧玛嘎


UID 26144
精华 1
积分 7411
帖子 1669
金钱 7401 喜悦币
威望 10
人脉 0
阅读权限 90
注册 2004-2-14
来自 山东郓城
状态 离线
[推荐阅读] 昨天被老陈踢出群了~~
据说代码写的不规范



在场外支持奥运.....
2008-3-24 02:49 PM#10
查看资料  访问主页  发短消息  QQ  顶部
 18  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.039648 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP