您现在的位置是:首页 > 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;
}
/*

本文标签:

很赞哦! ()

相关源码

  • (自适应响应式)房产合同知识产权企业管理pbootcms模板下载本模板基于PbootCMS系统开发,为知识产权服务、法律咨询及企业合同管理等行业设计。采用严谨专业的布局风格,突出法律文书与知识产权服务行业特色,适合展示各类法律服务和知识产权相关内容。查看源码
  • pbootcms模板(PC+WAP)微信小程序开发公司网站本模板为微信小程序开发代理、软件开发公司等企业设计,基于PbootCMS内核开发,支持PC+WAP双端响应式布局,数据实时同步,适用于多行业快速建站。查看源码
  • (自适应)宽屏大气红色机械设备pbootcms模板源码下载为机械设备制造企业设计的响应式网站模板,采用PbootCMS内核开发。宽屏布局突出设备展示效果,红色工业风格贴合机械行业属性,支持PC端与手机端自动适配查看源码
  • (自适应响应式)蓝色外贸英文产品介绍展示网站模板本模板采用手工编写的DIV+CSS架构,代码精简高效。适配手机端浏览,数据实时同步更新。内置SEO优化框架,支持独立设置各页面标题、关键词及描述。开源代码结构清晰,便于二次开发。查看源码
  • (PC+WAP)院校学院职业学校机构协会网站开源源码下载本模板基于PbootCMS系统开发,为高等院校、职业学校等教育机构设计,特别适合展示学校概况、院系设置、招生信息等内容。采用双端适配技术,确保在PC和移动设备上都能获得良好的浏览体验。查看源码
  • (PC+WAP)蓝色不锈钢簧线金属制品营销型pbootcms网站模板本模板基于PbootCMS内核开发,为不锈钢及金属制品企业量身打造。采用响应式设计,适配PC与移动设备,提供统一后台管理体验,数据实时同步更新。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐