2012年12月26日星期三

phpcms v9 URL访问中的MVC


phpcms v9 URL访问中的MVC

URL访问
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
也就是index,php文件
连后台的登录也是index,php进入 的

参数名称描述位置备注
m模型/模块名称phpcms/modules中模块目录名称必须
c控制器名称phpcms/modules/模块/*.php 文件名称必须
a事件名称phpcms/modules/模块/*.php 中方法名称 
模块访问方法[示例]:
http://yourdomain.com/index.php?m=content&c=index&a=show&id=1

其中
m = content 为模型/模块名称 位于phpcms/modules/content
c = index 为控制器名称 位于phpcms/modules/content/index.php
a = show 为时间名称 位于phpcms/modules/content/index.php 中show()方法
id = 1 为其他参数 与正常get传递参数形式相同
如果我们访问您的域名 如:
http://www.yourdomain.com/index.php
phpcms默认路由会定位到content模块的index控制器中的init操作,因为系统在没有指定模块和控制器的时候,会执行默认的模块和操作。因此下面的URL的结果是相同的:
系统还支持URL路由的功能,这些都能够带来其他的url访问效果。
http://www.yourdomain.com/index.php?m=content&c=index&a=init

关于phpcms的MVC架构【后台】


关于phpcms的MVC架构【后台】

后台的路径  其实和前台的路径格式是一样的。鼠标放到左侧菜单 在浏览器导航栏中可以看到链接路径,以 以下链接为例
http://test.phpcms.com/index.php?m=content&c=content&a=add&menuid=822&catid=2&pc_hash=e5ik7G

m=content  说明在content模块下  就找/phpcms/modules/content/ 这个目录
c=content  说明控制器的名字是content.php  就找/phpcms/modules/content/content.php  这个文件
a=add  说明调的是content.php中的add函数  就打开content.php找到function add() 函数
然后读函数,有个include $this->admin_tpl('****'),找到看加载的是哪个模板。模板文件位于 /phpcms/modules/content/templates/****.tpl.php  (此处的****就是前边admin_tpl()括号里边那四个*号,文件名师匹配的)
同理如果m=link&c=link  那么控制器文件就是/phpcms/modules/link/link.php 找到对应函数 看include的哪个模板。就找phpcms/modules/link/templates/xxx.tpl.php
关于模板变量  在模板中直接<?php ?>使用php标签。直接写php语法,变量名直接就用控制器函数中的变量名。这个和dede后台的模板操作是一样的。

PHPCMS V9网站更换域名怎么办?


PHPCMS V9网站更换域名怎么办?


网站在发展的过程中,很可能多次的修改域名。那么在PHPCMS V9中我们要怎么进行设置呢?
请进行以下步骤的修改:
  1. 修改/caches/configs/system.php里面所有和域名有关的,把以前的老域名修改为新域名就可以了。
  2. 进行后台设置-》站点管理 对相应的站点的域名进行修改。
  3. 更新系统缓存。点击后台右上角的“更新缓存”按钮。
  4. 进入内容-》附件管理-》附件地址替换。把附件地址批量的替换为新的地址。
  5. 内容-》批量更新URL 。把所有的文章的地址都更新一下。
  6. 下面就是把全站都生成一次了

PHPCMS V9后台登陆提示验证码错误


PHPCMS V9后台登陆提示验证码错误


PHPCMS V9在默认的情况下,Session是存放在数据库当中的。您可以在访问后台登陆页后,查看一下数据库中Session这个表,如果表中没有类型的数据code|s:4:"***"; 那说明Session没有成功的写入到数据库中。
这会使你的登陆失败。
可以偿试通过修改"/caches/configs/system.php"当中的:
'session_storage' => 'mysql',
将其修改为
'session_storage' => 'files',
再进行尝试。
上面的修改表示,Session存储到硬盘里面,这个将使用PHP默认的存储的方式。

PHPCMS V9采集过滤规则正则表达式


PHPCMS V9采集过滤规则正则表达式


在采集的使用中我们为采集项,设置了过滤项后,有的时候会出现无效的情况。也就是采集出来的结果并没有按我们的想像的把过滤项给删除了。这是为什么呢?
如下面的一个例子,我们在过滤项中进行如下的设置:
../down.php?uri=[|]
他的意思是要把“../down.php?uri=”给过滤掉。可采集出来的结果很不近人意。并没有把这个字符串给过滤掉。这是为什么呢?
PHPCMS V9的采集过滤项,使用的是正则表达式匹配过滤。在我们的上面所设置的过滤项中出现了一些正则表达式的特殊符号。当我把过滤规则修改为:
../down.php?uri=[|]
过滤项生效了。这里要给大家说明的一个问题就是,正则表达式中的特殊字符只要在它的前面加一个反斜线(),他的意思就是表示为符号本身了,不再是正则表达式中的有特殊意义的字符了。
那么正则表达式里面又有哪些需要注意的特殊符号呢?如下表所示,这些符号如果我们要匹配他们的时候都需要在他们的前面添加反斜线。
字符说明
^匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "^"
$匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "$"
( )标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "(" 和 ")"
[ ]用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "[" 和 "]"
{ }修饰匹配次数的符号。要匹配大括号,请使用 "{" 和 "}"
.匹配除了换行符(n)以外的任意一个字符。要匹配小数点本身,请使用 "."
?修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "?"
+修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "+"
*修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "*"
|左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "|"

PHPCMS V9开发模型-视图-控制器(MVC)


PHPCMS V9开发模型-视图-控制器(MVC)


MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
视图 :
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型 :
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器 :
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

PHPCMS V9文件目录结构框架


PHPCMS V9文件目录结构框架


PHPCMS V9根目录
| – api 接口文件目录
| – caches 缓存文件目录
| – configs 系统配置文件目录
| – caches_* 系统缓存目录
| – phpcms phpcms框架主目录
| – languages 框架语言包目录
| – libs 框架主类库、主函数库目录
| – model 框架数据库模型目录
| – modules 框架模块目录
| – templates 框架系统模板目录
| – phpsso_server phpsso主目录
| – statics 系统附件包
| – css 系统css包
| – images 系统图片包
| – js 系统js包
| – uploadfile 网站附件目录
| – admin.php 后台管理入口
| – index.php 程序主入口
| – crossdomain.xml FLASH跨域传输文件
| – robots.txt 搜索引擎蜘蛛限制配置文件
| – favicon.ico 系统icon图标