上节说到了application.class.php,当application类加载时,就会对路由进行初始化。
其中调用了param.class.php中的一些函数。
现在就来看一下param.class.php这个类
此类中,首先是定义了一个私有变量,用来接收路由配置。
//路由配置 private $route_config = '';
看一下它的构造函数吧。
public function __construct() { if(!get_magic_quotes_gpc()) { $_POST = new_addslashes($_POST); $_GET = new_addslashes($_GET); $_REQUEST = new_addslashes($_REQUEST); $_COOKIE = new_addslashes($_COOKIE); } //初始化私有变量$route_config,从系统配置文件route.php中获取 $this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', 'default'); //若route.php中配置了$_POST全局变量,则读取,键值对依依对应 if(isset($this->route_config['data']['POST']) && is_array($this->route_config['data']['POST'])) { foreach($this->route_config['data']['POST'] as $_key => $_value) { if(!isset($_POST[$_key])) $_POST[$_key] = $_value; } } //若route.php中配置了$_GET全局变量,则读取,键值对依依对应 if(isset($this->route_config['data']['GET']) && is_array($this->route_config['data']['GET'])) { foreach($this->route_config['data']['GET'] as $_key => $_value) { if(!isset($_GET[$_key])) $_GET[$_key] = $_value; } } //get传参方式中传递了分页(page),则对其进行处理 if(isset($_GET['page'])) { $_GET['page'] = max(intval($_GET['page']),1); $_GET['page'] = min($_GET['page'],1000000000); } return true; }
route.php 原始文件
<?php /** * 路由配置文件 * 默认配置为default如下: * 'default'=>array( * 'm'=>'phpcms', * 'c'=>'index', * 'a'=>'init', * 'data'=>array( * 'POST'=>array( * 'catid'=>1 * ), * 'GET'=>array( * 'contentid'=>1 * ) * ) * ) * 基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。 * data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。在程序中您可以使用$_POST['catid']来得到data下面POST中的数组的值。 * data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如: * 外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。 */ return array( 'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'), );
上面讲到了application类初始化中调用了param类中的函数,下面来看一下
获取模型
/** * 获取模型 */ public function route_m() { $m = isset($_GET['m']) && !empty($_GET['m']) ? $_GET['m'] : (isset($_POST['m']) && !empty($_POST['m']) ? $_POST['m'] : ''); $m = $this->safe_deal($m); if (empty($m)) { return $this->route_config['m']; } else { if(is_string($m)) return $m; } }
获取控制器
/** * 获取控制器 */ public function route_c() { $c = isset($_GET['c']) && !empty($_GET['c']) ? $_GET['c'] : (isset($_POST['c']) && !empty($_POST['c']) ? $_POST['c'] : ''); $c = $this->safe_deal($c); if (empty($c)) { return $this->route_config['c']; } else { if(is_string($c)) return $c; } }
获取事件
/** * 获取事件 */ public function route_a() { $a = isset($_GET['a']) && !empty($_GET['a']) ? $_GET['a'] : (isset($_POST['a']) && !empty($_POST['a']) ? $_POST['a'] : ''); $a = $this->safe_deal($a); if (empty($a)) { return $this->route_config['a']; } else { if(is_string($a)) return $a; } }
该类中还定义了三个函数,供调用
/** * 安全处理函数 * 处理m,a,c */ private function safe_deal($str) { return str_replace(array('/', '.'), '', $str); }
cookies函数
/** * 设置 cookie * @param string $var 变量名 * @param string $value 变量值 * @param int $time 过期时间 */ public static function set_cookie($var, $value = '', $time = 0) { $time = $time > 0 ? $time : ($value == '' ? SYS_TIME - 3600 : 0); $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0; $var = pc_base::load_config('system','cookie_pre').$var; $_COOKIE[$var] = $value; if (is_array($value)) { foreach($value as $k=>$v) { setcookie($var.'['.$k.']', sys_auth($v, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } } else { setcookie($var, sys_auth($value, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } }
/** * 获取通过 set_cookie 设置的 cookie 变量 * @param string $var 变量名 * @param string $default 默认值 * @return mixed 成功则返回cookie 值,否则返回 false */ public static function get_cookie($var, $default = '') { $var = pc_base::load_config('system','cookie_pre').$var; return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default; }
相关推荐
在"PHPCMS资源网站源码软件源码下载站网站源码"中,我们可以理解为这是提供PHPCMS源码的下载平台,用于搭建一个专门发布和分享各种软件源码的下载站。这种网站通常会包含以下关键知识点: 1. **网站框架**:PHPCMS...
"华创源码使用说明.html" 这个文件很可能是PHPCMS的使用教程或指南,包含了如何安装、配置以及使用该系统的重要信息。对于初学者或者不熟悉PHPCMS的人来说,这是一个非常有价值的参考资料。它可能涵盖了系统的安装...
phpcms最新版源码
PHPCMS资源网站源码软件源码下载站网站源码下载.zip
【标题】"thinkphp企业网站源码 phpcms网站源码 多语言版V10.2" 提供的是一个基于ThinkPHP框架的企业级网站构建解决方案,结合了phpcms的功能,支持多语言版本,适用于搭建国际化的企业官网。 【描述】中的内容再次...
"仿2345多特软件下载站网站源码(PHPCMS内核)" 这个标题表明这是一个基于PHPCMS内容管理系统开发的网站源代码,其设计灵感来源于2345多特软件下载站。2345多特是一个知名的软件下载平台,提供各种类型的应用程序和...
- **安装说明.gif**:这可能是一个指导如何安装和配置这套源码的动态图教程,对于初学者来说非常有帮助。 - **index.html**:这是网站的主页,通常包含网站的基本布局和导航元素。 - **js.html**:此文件可能包含...
phpcms 一个强大的cms,很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很...
标题中的“自己用PHPCMS集合BootStrap写的数码网站的源码”表明这是一个使用了PHPCMS内容管理系统,并结合BootStrap前端框架构建的,主要用于数码产品展示的网站源代码。PHPCMS是一款常见的开源内容管理系统,适用于...
导入数据库后,需要在phpcms的配置文件中设置正确的数据库连接参数,确保系统能正确读取和写入数据。 【源码】部分则包含了phpcms系统的核心文件和模板文件。源码文件夹中,一般有以下几个关键部分: 1. `templates...
**phpcms v9 源码详解** **一、phpcms v9 简介** phpcms v9 是一款基于 PHP 和 MySQL 的开源内容管理系统,由国内知名的PHP开发团队开发。该系统以其强大的功能、易用性和高度的可扩展性在众多CMS中脱颖而出,广泛...
【phpcmsv9化工类网站源码带手机含数据库】是一个专为化工行业设计的企业网站源码,基于知名的内容管理系统phpcms v9构建。这个源码包包含了完整的网站结构、设计模板以及相应的数据库,旨在为化工企业提供一个高效...
说明地址:;PHPcms内核源码下载整站源码(PHP虚拟资源下载资源站源码带免登录付费下载)
接着,将源码上传到服务器,并根据需要配置`.user.ini`和`config.php`(如果存在)等文件,以设置数据库连接信息和其他系统参数。最后,通过`index.php`或`admin.php`登录后台,完成网站内容的填充和设置。 总的来...
【phpcms餐饮手机网站整站源码解析】 phpcms,作为一款开源的PHP内容管理系统,以其强大的功能和灵活的扩展性,在网站开发领域备受青睐。本整站源码专为餐饮行业设计,提供了完整的手机网站解决方案,适用于移动端...
PHPcms源码[CMS程序]JTBC网站内容管理系统 v1.0.0.5(PHP)_jtbccms_php
本篇文章将详细解析 phpcms_v9.2.5_UTF8 的核心特点,并提供安装和配置的步骤指导。 一、系统特性 1. **内容管理**:phpcms 提供了完善的内容发布、管理及审核机制,支持多种内容类型如新闻、图片、下载等,且具备...
Ronger婚纱摄影phpcms整站源码简介 婚纱摄影网站源码,phpcms模板,婚纱摄影网站模板 Ronger婚纱摄影phpcms整站源码是一个采用了PHPcmsV9作为后台的婚纱摄影网站源码,本站适合用作婚纱类的企业PC网站。 Ronger婚纱...