您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms源码index文件分析
笑霜2025-06-11phpcms教程已有人查阅
导读这次是逆雪寒对index.php的分析:尽量每天都有新的东西每天都能进一小步现在开始讲index.php 首页文件. 基本来说PHPCMS的加载到显示操作的整个流程都分析完了.
这次是逆雪寒对index.php的分析:尽量每天都有新的东西每天都能进一小步现在开始讲index.php 首页文件. 基本来说PHPCMS的加载到显示操作的整个流程都分析完了.
大家看一遍后.还要整体的来看来分析.慢慢体会.把些好的思想和思路实现到自己以后的项目里.
我相信大家都会变得很强的. 记得: 程序是死的,人是活的.有实现思路一切都好办了.
大家看一遍后.还要整体的来看来分析.慢慢体会.把些好的思想和思路实现到自己以后的项目里.
我相信大家都会变得很强的. 记得: 程序是死的,人是活的.有实现思路一切都好办了.
<?php
/*
代码分析版权所有
*/
/*
看 common.inc.php 核心启动文件我们已经讲解完了。应该都明白了吧
*/
require './include/common.inc.php';
/*
phpcms 允许在后台生静态和使用静态,这里就是先判断 $PHPCMS['ishtml']
(从文本缓存弄过来的。应该知道了吧)是否为1 就是开启了。和这个 静态的html文件是否存在。
*/
if($PHPCMS['ishtml'] == 1 && file_exists(PHPCMS_ROOT.'/'.$PHPCMS['index'].'.'.$PHPCMS['fileext']))
{
header('location:'.$PHPCMS['index'].'.'.$PHPCMS['fileext']);
exit;
}
$channels = array();
$channels['article'] = $channels['down']
= $channels['picture']
= $channels['info']
= array();
// 获取频道模块的信息。都是从缓存中取的
foreach($CHANNEL as $v)
{
$module = $v['module'];
if($v['islink'] == 0 && $MODULE[$module]['iscopy'] == 1)
{
$channels[$module][$v['channelid']] = $v;
}
}
// 这个是网页的SEO (title,keywords,description)信息。这个写好了。网络蜘蛛会找你哦。
$head['title'] = $PHPCMS['seo_title'];
$head['keywords'] = $PHPCMS['seo_keywords'];
$head['description'] = $PHPCMS['seo_description'];
/*
* template() 函数是模板函数。这个就是这章的主题。往下会讲模板引擎的制作,大家都看到include 了吧。
* 它的参数是文件地址。那么就可以想到 template()函数其实就是模板编译后的PHP文件地址。
*/
include template('phpcms', 'index');
/*
这个函数厉害了。用来自动生缓存页的(这个是页面缓存和数据库信息的文本缓存不是一回事),页面缓存,
就是把你所看的页自动生成 XX.html 静态页。请注意前面代码。是不是有个 header()跳转到静态页呀。
那静态页那里来的?就是给这个函数弄出来的。自动静态化了其实。@@是不是很简单呢。上菜先:
*/
/*
首先判断。文件当前文件不是JS问文件和后台打开了页面缓存静态化,。然后使用了OB读写缓冲区系列函数来操作缓冲区。
ob_get_clean() 函数。十分有用。一般我们做整站静态化也是利用OB系列函数来实现。
这个函数就是获取当前缓冲区的HTML内容。然后把将要输出的缓冲区内容清除掉。网页先是一点点读到浏览器的缓冲区。
当缓冲区满了以后才会放出来。所以我们
可以用OB系列函数在缓冲区没有输出之前截取内容来做我们要做的过滤等动作。(dz的伪静态有部分就这样实现的。
把缓冲区中的所有超级连接地址更改成:thread-46695-1-3.html 形式。然后apache 那边再用.hataccess 来做判断跳转)
这里也是。我们获取将要输出的内容以后 调用 strip_js() 这个函数来过滤HTML内容。 因为比较简单继续上菜:
*/
function phpcache($is_js = 0)
{
global $CONFIG, $cachefiledir, $cachefile;
if(!$is_js && $CONFIG['phpcache'] != '2') {
return FALSE;
}
$contents = ob_get_clean();
if($is_js) {
$contents = strip_js($contents);
}
if($CONFIG['phpcache'] == '2' && $cachefiledir && $cachefile)
{
dir_create($cachefiledir);
file_put_contents($cachefile, $contents);
@chmod($cachefile, 0777);
}
// 告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可
header('Expires: Mon, 26 Jul 2000 05:00:00 GMT');
// 告诉服务器本页之后修改日期。目的就是强迫浏览器获取较新资料
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
// 这句 session_cache_limiter('private') 作用差不多。
// 就是用户 点击后退不会出现警告页。十分有用哦。大家别忘了
header('Cache-Control: no-cache, must-revalidate');
// 不缓存当前页 。其实和前一句一样意思,这句不过是为了兼容http1.0协议。
header('Pragma: no-cache');
// 输出内容。
echo $contents;
}
phpcache();
/*
主要是来过滤内容里面的 \n 换行 、\r 换页符 和'\'具体请百度:制表符
继续我们上个函数strip_js过滤完内容后。 在使用 file_put_contents() 函数 把内容写到文件里面去。
也就是那个 HTML静态页,恩完成了。当前页的静态页已经存在了。
但好象不对是吧。因为你刚用了 ob_get_clean() 函数。截取内容后清空了输出的内容。
那就是浏览器成了空白页了。所以我们要手动的来 echo 输出内容给客户看。echo 前呢
还有些东西要做就是 header 几个http协议头过去 注释已经给出。详细的百度:http协议,
会有详细的参数说明 。其主要目的是:强制用户每次访问这个页面时获取较新资料,而不是使用存在客户端的缓存。
*/
function strip_js($string, $js = 1)
{
$string = str_replace(array("\n","\r","\""),array('','',"[url=]\\\""),$string[\url]);
return $js == 1
? "document.write(\"".$string."\");\n"
: $string;
}
/*
本文标签:
很赞哦! ()
相关教程
图文教程
PHPCMS模型设置和栏目设置方法
先增模型那怕是不完善的模型,一定要先设置,然后建立对应的模板,那怕是一个空模板文件。原因很简单回头修改设置好了的栏目属性会是一件非常疼苦的事,在这点DEDE更人性化,更简单。
phpcms怎么配置数据库文件
打开这个配置文件,加入我们的数据库配置信息。数据库配置信息为二维数组结构,默认为default,可以根据default结构配置多个数据库链接(如:extended_1)
PHPCMS的GET标签使用方法
通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容的简单化、友好化代码,她可调用本系统和外部数据,只有你对SQL有一定的了解,她就是你的绝世好剑!
Phpcms本地搬家的方法
首先修改“/cache/configs/database.php”中数据库连接文件;然后修改“/cache/configs/system.php”将“localhost”批量替换为用户的网址;
相关源码
-
(自适应响应式)高端网站建设设计公司互联网营销网站pbootcms模板本模板基于PbootCMS内核开发,为网站建设公司和互联网营销企业量身打造。采用响应式设计,适配各种移动设备,提供统一的后台管理体验查看源码 -
(PC+WAP)高端餐饮美食小吃加盟网站模板下载pbootcms本模板基于PbootCMS内核开发,为餐饮美食品牌加盟、小吃连锁企业量身打造。通过精致的美食视觉呈现与加盟业务流程展示,帮助餐饮企业建立专业线上门户,实现品牌形象与加盟业务的双重展示。查看源码 -
pbootcms模板(PC+WAP)APP应用软件下载类官网源码为APP应用软件官网打造的响应式解决方案,PC端与移动端(WAP)数据实时同步,一次更新全网生效,满足多终端用户无缝体验需求。查看源码 -
帝国cms7.5文库范文/付费下载/复制付费/带支付源码免费下载本模板为文库、文档分享、知识付费类平台设计,提供完整的内容变现解决方案。系统支持多种内容展示与付费模式,满足不同场景下的内容价值转化需求,帮助平台实现内容资源的有效管理和商业化运营。查看源码 -
(自适应html5)重工业钢铁机械设备网站pbootcms响应式模板下载为重工业领域打造的响应式网站模板,助力企业高效展示产品与服务,基于PbootCMS开发的工业级网站模板,特别适合钢铁制造、机械设备生产等重工业企业使用。查看源码 -
html5响应式pbootcms模板新闻资讯博客网站源码该模板采用PbootCMS内核开发,专为新闻资讯类网站打造,同时具备高度行业适配性--只需替换图文内容即可快速转型为企业官网、行业门户等各类站点。查看源码
| 分享笔记 (共有 篇笔记) |
