zoukankan
html css js c++ java
PHPCMS 整站代码分析讲解(五)
PHPCMS
整站代码分析讲解(五)
现在开始讲
index.php
首页文件
.
基本来说
PHPCMS
的加载到显示操作的整个流程都分析完了
.
大家看一遍后
.
还要整体的来看来分析
.
慢慢体会
.
把些好的思想和思路实现到自己以后的项目里
.
我相信大家都会变得很强的
.
记得
:
程序是死的
,
人是活的
.
有实现思路一切都好办了
.
[Copy to clipboard]
[ - ]
CODE: <?php /** 代码分析版权所有:逆雪寒 */ require './include/common.inc.php'; /** 看
common.inc.php
核心启动文件我们已经讲解完了。应该都明白了吧
*/ if($PHPCMS['ishtml'] == 1 && file_exists(PHPCMS_ROOT.'/'.$PHPCMS['index'].'.'.$PHPCMS['fileext'])) { header('location:'.$PHPCMS['index'].'.'.$PHPCMS['fileext']); exit; } /** phpcms
允许在后台生静态和使用静态
,
这里就是先判断
$PHPCMS['ishtml'](
从文本缓存弄过来的。应该知道了吧
)
是否为
1
就是开启了。和这个 静态的
html
文件是否存在。
*/ $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; } //
获取频道模块的信息。都是从缓存中取的
$head['title'] = $PHPCMS['seo_title']; $head['keywords'] = $PHPCMS['seo_keywords']; $head['description'] = $PHPCMS['seo_description']; //
这个是网页的
SEO (title,keywords,description)
信息。这个写好了。网络蜘蛛会找你哦。
include template('phpcms', 'index'); // template()
函数是模板函数。这个就是这章的主题。往下会讲模板引擎的制作
,
大家都看到
include
了吧。它的参数是文件地址。那么就可以想到
template()
函数其实就是
//
模板编译后的
PHP
文件地址。
phpcache(); /** 这个函数厉害了。用来自动生缓存页的(这个是页面缓存和数据库信息的文本缓存不是一会事)
,
页面缓存,就是把你所看的页自动生成
XX.html
静态页。请注意前面代码。是不是有个
header()
跳转到静态页呀。
那静态页那里来的?就是给这个函数弄出来的。自动静态化了其实。
@@
是不是很简单呢。上菜先:
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');
告诉服务器本页最后修改日期。目的就是强迫浏览器获取最新资料
header('Cache-Control: no-cache, must-revalidate');
这句
session_cache_limiter('private')
作用差不多。就是用户 点击后退不会出现警告页。十分有用哦。大家别忘了
header('Pragma: no-cache');
不缓存当前页 。其实和前一句一样意思,这句不过是为了兼容
http1.0
协议。
echo $contents; //
输出内容。
} 首先判断。文件当前文件不是
JS
问文件和后台打开了页面缓存静态化
,
。然后使用了
OB
读写缓冲区系列函数来操作缓冲区。
ob_get_clean()
函数。十分有用。一般我们做整站静态化也是利用
OB
系列函数来实现。
这个函数就是获取当前缓冲区的
HTML
内容。然后把将要输出的缓冲区内容清除掉。网页先是一点点读到浏览器的缓冲区。当缓冲区满了以后才会放出来。所以我们
可以用
OB
系列函数在缓冲区没有输出之前截取内容来做我们要做的过滤等动作。
(dz
的伪静态有部分就这样实现的。把缓冲区中的所有超级连接地址更改成
:thread-46695-1-3.html
形式。然后
apache
那边再用
.hataccess
来做判断跳转
)
这里也是。我们获取将要输出的内容以后 调用
strip_js()
这个函数来过滤
HTML
内容。 因为比较简单继续上菜:
function strip_js($string, $js = 1) { $string = str_replace(array("\n","\r","\""),array('','',"[url=]\\\""),$string[/url]); return $js==1 ? "document.write(\"".$string."\");\n" : $string; } 主要是来过滤内容里面的
\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; } $js
为
1
的时候 是
document.write
内容
.
JS
格式我也不知道是什么格式
.
看功能
.
它只是很简单、的过滤掉
\n \r \
而已
.
查看全文
相关阅读:
在 docker 容器中捕获信号
python入门二维码生成
SSH 端口转发
Python之模块与包
滑块验证demo示例
上下界网络流初探
大整数模板
计算几何模板
关于差分约束系统的脑洞
并查集,以及可拆分并查集
原文地址:https://www.cnblogs.com/gxldan/p/4066765.html
最新文章
poj1953 World Cup Noise
北大POJ题库使用指南
poj2488 A Knight's Journey
poj2479 Maximum sum
poj1042 Gone Fishing
如何组织Html元素与如何进行CSS命名(下)
Javascript: 从prototype漫谈到继承(1)
折腾:利用Node.js+express框实现图片上传
【2012.10.13 上周工作总结】
从onload和DOMContentLoaded谈起
热门文章
如何组织Html元素与如何进行CSS命名(上)
【原创翻译】深入理解javascript事件处理函数绑定三部曲(三)——高级事件函数绑定模型
答寒冬的面试题(1)
用最通俗易懂的代码帮助新手理解javascript闭包
谈javascript变量声明
XAMPP安装教程
Drupal建站过程思考——不识庐山真面目,只缘身在此山中
基于BitNami for XAMPP进行Drupal7安装的教程(Win7平台)
Drupal7安装完整教程
机器学习实践之K近邻算法实践学习
Copyright © 2011-2022 走看看