喜悦国际村 » 喜悦原创 » dedecms代码分析

页: [1]
jingangel2008-3-11 03:21 AM
dedecms代码分析

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

我先挑战自己,试着分析

[php]
<?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'>\r\n";
  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
?>
[/php]

[[i] 本帖最后由 jingangel 于 2008-3-11 11:24 AM 编辑 [/i]]

jingangel2008-3-11 03:38 AM
dede本来的源码中已经有很多的注释了,
自己的用的是//:

[php]
<?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');
?>
[/php]

[[i] 本帖最后由 jingangel 于 2008-3-11 03:00 PM 编辑 [/i]]

yzxh242008-3-11 05:12 AM
dede的代码写的太乱了,不好读!

lyhiving2008-3-11 05:35 AM
[quote]原帖由 [i]yzxh24[/i] 于 2008-3-11 01:12 PM 发表
dede的代码写的太乱了,不好读! [/quote]


同解

xanxin2008-3-11 05:54 AM
不错!good

coolcool12652008-3-16 02:22 PM
不过,dedecms号称是  cms的最好系统

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



高手们不妨来试着看看,

它是 柏拉图 一个人编写的

真可谓是 强人啊!

boneguan2008-3-19 06:53 AM
我改过它的系统,增加了个批量上传图片功能,但没怎么深研。 不过里面结构还算清晰。但还是做个简单的批量功能,比用自己的框架 多了3倍的时间

wleige2008-3-19 07:50 AM
修改起来相当麻烦

3066551522008-3-20 01:01 PM
dede...

剑枫2008-3-24 06:49 AM
据说代码写的不规范

zshtom2008-3-29 02:38 PM
[quote]原帖由 [i]coolcool1265[/i] 于 2008-3-16 10:22 PM 发表
不过,dedecms号称是  cms的最好系统

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



高手们不妨来试着看看,

它是 柏拉图 一个人编写的

真可谓是 强人啊! [/quote]


貌似外国的cms 好多比他强的呢 不知道 您知道不。。

jingangel2008-4-1 03:04 AM
真是不好意思,仔细看了看是phpcms的代码分析
[url]http://www.lucms.com/redevelopment/20080401/51.html[/url]

[[i] 本帖最后由 jingangel 于 2008-4-1 11:12 AM 编辑 [/i]]

jingangel2008-4-29 02:40 AM
inc_channel_unit_functions.php

代码贴出来,大家有知道的详细给分析分析,原来已经带了一部分解释
<?php
//------------------------------------------------
//该文件是所有涉及文档或列表读取必须引入的文件
//------------------------------------------------
global $PubFields,$cfg_mainsite,$cfg_plus_dir,$cfg_powerby,$cfg_indexname,$cfg_indexurl;
global $cfg_webname,$cfg_templets_dir,$cfg_df_style,$cfg_special,$cfg_member_dir;
//设置一些公用变量
$PubFields['phpurl'] = $cfg_mainsite.$cfg_plus_dir;
$PubFields['indexurl'] = $cfg_mainsite.$cfg_indexurl;
$PubFields['templeturl'] = $cfg_mainsite.$cfg_templets_dir;
$PubFields['memberurl'] = $cfg_mainsite.$cfg_member_dir;
$PubFields['specurl'] = $cfg_mainsite.$cfg_special;
$PubFields['indexname'] = $cfg_indexname;
$PubFields['powerby'] = $cfg_powerby;
$PubFields['webname'] = $cfg_webname;
$PubFields['templetdef'] = $cfg_templets_dir.'/'.$cfg_df_style;
$GLOBALS['pTypeArrays'] = Array();
$GLOBALS['idArrary'] = '';
//----------------------------------
//用星表示软件或Flash的等级
//----------------------------------
function GetRankStar($rank)
{
        $nstar = "";
        for($i=1;$i<=$rank;$i++) $nstar .= "★";
        for($i;$i<=5;$i++) $nstar .= "☆";
        return $nstar;
}
//-------------------------
//产品模块中供应方式的处理
//-----------------------
function SelSpType($stype){
        $tps = array('厂家直销','厂家批发','商家批发','商家零售','其它渠道');
        $rstr = "<select name='ssstype' style='width:80px'>\r\n";
        foreach($tps as $tp){
                $rstr .= ($stype==$tp ? "<option selected>$tp</option>\r\n" : "<option>$tp</option>\r\n");
        }
        $rstr .= "</select>\r\n";
        return $rstr;
}
//-----------------------------
//获得文章网址
//----------------------------
function GetFileUrl(
          $aid,$typeid,$timetag,$title,$ismake=0,$rank=0,
          $namerule="",$artdir="",$money=0,$aburl=false,$siteurl="")
{
        if($rank!=0||$ismake==-1||$typeid==0||$money>0) //动态文章
        {
                if($GLOBALS['cfg_multi_site']=='Y')
                {
                        $siteurl = $GLOBALS['cfg_basehost'];
                }

                return $siteurl.$GLOBALS['cfg_plus_dir']."/view.php?aid=$aid";
        }
        else
        {
                $articleRule = $namerule;
                $articleDir = MfTypedir($artdir);
                if($namerule=="") $articleRule = $GLOBALS['cfg_df_namerule'];
                if($artdir=="") $articleDir  = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir'];
                $dtime = GetDateMk($timetag);
                $articleRule = strtolower($articleRule);
                list($y,$m,$d) = explode("-",$dtime);

                $articleRule = str_replace("{typedir}",$articleDir,$articleRule);
                $articleRule = str_replace("{y}",$y,$articleRule);
                $articleRule = str_replace("{m}",$m,$articleRule);
                $articleRule = str_replace("{d}",$d,$articleRule);
                $articleRule = str_replace("{timestamp}",$timetag,$articleRule);
                $articleRule = str_replace("{aid}",$aid,$articleRule);
                $articleRule = str_replace("{cc}",dd2char($m.$d.$aid.$y),$articleRule);
                if(ereg('{p',$articleRule)){
                  $articleRule = str_replace("{pinyin}",GetPinyin($title)."_".$aid,$articleRule);
                  $articleRule = str_replace("{py}",GetPinyin($title,1)."_".$aid,$articleRule);
                }

                $articleUrl = "/".ereg_replace("^/","",$articleRule);

                //是否强制使用绝对网址
                if($aburl && $GLOBALS['cfg_multi_site']=='Y'){
                        if($siteurl=="") $siteurl = $GLOBALS["cfg_basehost"];
                        $articleUrl = $siteurl.$articleUrl;
                }

                return $articleUrl;
        }
}
//获得新文件网址
//本函数会自动创建目录
function GetFileNewName(
         $aid,$typeid,$timetag,$title,$ismake=0,$rank=0,
         $namerule="",$artdir="",$money=0,$siterefer="",
         $sitepath="",$moresite="",$siteurl="")
{
        if($rank!=0||$ismake==-1||$typeid==0||$money>0){ //动态文章
                return $GLOBALS['cfg_plus_dir']."/view.php?aid=$aid";
        }
        else
        {
                 $articleUrl = GetFileUrl(
                               $aid,$typeid,$timetag,$title,$ismake,$rank,
                               $namerule,$artdir,$money);
                 $slen = strlen($articleUrl)-1;
                 for($i=$slen;$i>=0;$i--){
                    if($articleUrl[$i]=="/"){ $subpos = $i; break; }
                 }
                 $okdir = substr($articleUrl,0,$subpos);
                 CreateDir($okdir,$siterefer,$sitepath);
        }
        return $articleUrl;
}
//--------------------------
//获得指定类目的URL链接
//对于使用封面文件和单独页面的情况,强制使用默认页名称
//-------------------------
function GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$siteurl="")
{

        //跳转网址
        if($ispart>2){
                return $typedir;
        }
       
        if($defaultname == 'index.html'){
                $defaultname = '';
        }
        if($isdefault==-1)
        {
                $reurl = $GLOBALS["cfg_plus_dir"]."/list.php?tid=".$typeid;
        }else if($ispart>0)
        {
                $reurl = "$typedir/".$defaultname;
        }else
        {
                if($isdefault==0)
                {
                        $reurl = str_replace("{page}","1",$namerule2);
                        $reurl = str_replace("{tid}",$typeid,$reurl);
                        $reurl = str_replace("{typedir}",$typedir,$reurl);
                }else
                {
                        $reurl = "$typedir/".$defaultname;
                }
        }
       
        $reurl = ereg_replace("/{1,}","/",$reurl);
       
        if($GLOBALS['cfg_multi_site']=='Y'){
                if($siteurl=="" || $isdefault==-1) $siteurl = $GLOBALS['cfg_basehost'];
                if($siteurl!="abc") $reurl = $siteurl.$reurl;
        }

        $reurl = eregi_replace("{cmspath}",$GLOBALS['cfg_cmspath'],$reurl);
       
        return $reurl;
}

//魔法变量,用于获取两个可变的值
//------------------------
function MagicVar($v1,$v2)
{
  if($GLOBALS['autoindex']%2==0) return $v1;
  else return $v2;
}

//获取上级ID列表
function GetParentIDS($tid,&$dsql)
{
        global $_Cs;
        $GLOBALS['pTypeArrays'][] = $tid;

        if(!is_array($_Cs)){ require_once(dirname(__FILE__)."/../data/cache/inc_catalog_base.php"); }

        if(!isset($_Cs[$tid]) || $_Cs[$tid][0]==0){
                return $GLOBALS['pTypeArrays'];
        }
        else{
                return GetParentIDS($_Cs[$tid][0],$dsql);
        }
}

//----------------------
//获取一个类目的顶级类目ID
//----------------------
function SpGetTopID($tid){
  global $_Cs;
  if(!is_array($_Cs)){ require_once(dirname(__FILE__)."/../data/cache/inc_catalog_base.php"); }
  if($v[$tid][0]==0) return $tid;
  else return SpGetTopID($tid);
}

//----------------------
//获取一个类目的所有顶级栏目ID
//----------------------
global $TopIDS;
function SpGetTopIDS($tid){
  global $_Cs,$TopIDS;
  if(!is_array($_Cs)){ require_once(dirname(__FILE__)."/../data/cache/inc_catalog_base.php"); }
  $TopIDS[] = $tid;
  if($_Cs[$tid][0]==0) return $TopIDS;
  else return SpGetTopIDS($tid);
}

//-----------------------------
// 返回与某个目相关的下级目录的类目ID列表(删除类目或文章时调用)
//由于PHP有些版本存在Bug,不能直接使用同一数组在递归逻辑,只能复制副本传递给函数
//-----------------------------
function TypeGetSunTypes($ID,&$dsql,$channel=0)
{
                global $_Cs;
                $GLOBALS['idArray'] = array();
                if( !is_array($_Cs) ){ require_once(dirname(__FILE__)."/../data/cache/inc_catalog_base.php"); }
                TypeGetSunTypesLogic($ID,$_Cs,$channel);
                return $GLOBALS['idArray'];
}

function TypeGetSunTypesLogic($ID,$sArr,$channel=0)
{
                if($ID!=0) $GLOBALS['idArray'][$ID] = $ID;
                foreach($sArr as $k=>$v)
                {
                        if( $v[0]==$ID && ($channel==0 || $v[1]==$channel ))
                        {
                                 TypeGetSunTypesLogic($k,$sArr,$channel);
                        }
                }
}

//--------------------------------
//获得某ID的下级ID(包括本身)的SQL语句“($tb.typeid=id1 or $tb.typeid=id2...)”
//-----------------------------
function TypeGetSunID($ID,&$dsql,$tb="#@__archives",$channel=0,$onlydd=false)
{
                $GLOBALS['idArray'] = array();
                TypeGetSunTypes($ID,$dsql,$channel);
                $rquery = "";
                foreach($GLOBALS['idArray'] as $k=>$v)
                {
                        if($onlydd){
                                $rquery .= ($rquery=='' ? $k : ",{$k}");
                        }else{
                          if($tb!="")
                             $rquery .= ($rquery!='' ? " Or {$tb}.typeid='$k' " : " {$tb}.typeid='$k' ");
                    else
                             $rquery .= ($rquery!='' ? " Or typeid='$k' " : " typeid='$k' ");
                  }
                }
                if($onlydd) return $rquery;
                else return " (".$rquery.") ";
}
//栏目目录规则
function MfTypedir($typedir)
{
  global $cfg_cmspath;
  if(eregi("^http://",$typedir)) return $typedir;
  $typedir = eregi_replace("{cmspath}",$cfg_cmspath,$typedir);
  $typedir = ereg_replace("/{1,}","/",$typedir);
  return $typedir;
}
//模板目录规则
function MfTemplet($tmpdir)
{
  global $cfg_df_style;
  $tmpdir = eregi_replace("{style}",$cfg_df_style,$tmpdir);
  $tmpdir = ereg_replace("/{1,}","/",$tmpdir);
  return $tmpdir;
}
//获取网站搜索的热门关键字
function GetHotKeywords(&$dsql,$num=8,$nday=365,$klen=16,$orderby='count'){
        global $cfg_phpurl,$cfg_cmspath;
        $nowtime = time();
        $num = @intval($num);
        $nday = @intval($nday);
        $klen = @intval($klen);
        if(empty($nday)) $nday = 365;
        if(empty($num)) $num = 6;
        if(empty($klen)) $klen = 16;
        $klen = $klen+1;
        $mintime = $nowtime - ($nday * 24 * 3600);
        if(empty($orderby)) $orderby = 'count';
        $dsql->SetQuery("Select keyword,istag From #@__search_keywords where lasttime>$mintime And length(keyword)<$klen order by $orderby desc limit 0,$num");
  $dsql->Execute('hw');
  $hotword = "";
  while($row=$dsql->GetArray('hw')){
                 if($row['istag']==1) $hotword .= " <a href='".$cfg_cmspath."/tag.php?/{$row['keyword']}/'>".$row['keyword']."</a> ";
                 else $hotword .= " <a href='".$cfg_phpurl."/search.php?keyword=".urlencode($row['keyword'])."&searchtype=titlekeyword'>".$row['keyword']."</a> ";
        }
        return $hotword;
}
//
function FormatScript($atme){
        if($atme=="&nbsp;") return "";
        else return trim(html2text($atme));
}
//------------------------------
//获得自由列表的网址
//------------------------------
function GetFreeListUrl($lid,$namerule,$listdir,$defaultpage,$nodefault){
        $listdir = str_replace('{cmspath}',$GLOBALS['cfg_cmspath'],$listdir);
        if($nodefault==1){
          $okfile = str_replace('{page}','1',$namerule);
          $okfile = str_replace('{listid}',$lid,$okfile);
          $okfile = str_replace('{listdir}',$listdir,$okfile);
  }else{
          $okfile = $listdir.'/'.$defaultpage;
  }
        $okfile = str_replace("\\","/",$okfile);
        $trueFile = $GLOBALS['cfg_basedir'].$okfile;
        if(!file_exists($trueFile)){
                 $okfile = $GLOBALS['cfg_phpurl']."/freelist.php?lid=$lid";
        }
        return $okfile;
}
//----------
//判断图片可用性
function CkLitImageView($imgsrc,$imgwidth){
        $imgsrc = trim($imgsrc);
        if(!empty($imgsrc) && eregi('^http',$imgsrc)){
                 $imgsrc = $cfg_mainsite.$imgsrc;
        }
        if(!empty($imgsrc) && !eregi("img/dfpic\.gif",$imgsrc)){
                return "<img src='".$imgsrc."' width=80 align=left>";
        }
        return "";
}
//----------
//使用绝对网址
function Gmapurl($gurl){
        if(!eregi("http://",$gurl)) return $GLOBALS['cfg_basehost'].$gurl;
        else return $gurl;
}

//----------------
//获得图书的URL
//----------------
function GetBookUrl($bid,$title,$gdir=0)
{
        global $cfg_cmspath;
        if($gdir==1) $bookurl = "{$cfg_cmspath}/book/".DedeID2Dir($bid);
        else $bookurl = "{$cfg_cmspath}/book/".DedeID2Dir($bid).'/'.GetPinyin($title).'-'.$bid.'.html';
        return $bookurl;
}

//-----------------
//根据ID生成目录
//-----------------
function DedeID2Dir($aid)
{
        $n = ceil($aid / 1000);
        return $n;
}

?>

sanders_yao2008-4-29 04:55 AM
一年前曾经读过一部分 执行效率很成问题

gas2008-4-29 09:37 AM
不错,鼓励一下,付出就会有收获的

coolcool12652008-5-3 10:49 AM
一直关注中ing

k6bar2008-5-4 02:22 AM
织梦的代码读起来,那叫一个累啊

剑枫2008-5-5 06:05 AM
同意各位说法,柏拉图精神值得鼓励,只是应该规划下书写,提高下效率。

jingangel2008-5-16 07:21 AM
我不准备继续下去了,因为我发现这代码大多数我都看不懂,.......

c1a1o12008-5-16 09:59 AM
[quote]原帖由 [i]jingangel[/i] 于 2008-5-16 03:21 PM 发表
我不准备继续下去了,因为我发现这代码大多数我都看不懂,....... [/quote]
如果想学习他 某个功能怎样实现的还是可以看一下的


查看完整版本: dedecms代码分析


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.011987 second(s), 2 queries