您的位置:首页 > 移动开发

文件作用解析之:application_top.php

2013-12-17 22:29 260 查看
1、首先检查访问的链接中,有没有携带系统禁用的参数,如'GLOBALS', '_COOKIE'等,由$paramsToAvoid来指定。
如果包含有,则返回:header('HTTP/1.1 406 Not Acceptable');并退出。
如果你这样访问:http://localhost/zencart/index.php?GLOBALS=1,你会得到一片空白,并且控制台会报错:"NetworkError: 406 Not Acceptable - http://localhost/zencart/index.php?GLOBALS=1"
2、其次,对于允许的参数进行检查,由$paramsToCheck数组指定。
如果里面的任意一个参数的值以http开头,或者包含了//,或者长度大于43,也同样不允许,一样会得到406的错误。
如果你访问http://localhost/zencart/index.php?main_page=http
或者:http://localhost/zencart/index.php?main_page=//
或者:http://localhost/zencart/index.php?main_page=jjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
都会得到406的访问错误。

3、检查是否有用户自定义的配置文件,有就加载:
if (file_exists('includes/local/configure.php')) {
/**
* load any local(user created) configure file.
*/
include('includes/local/configure.php');
}

4、判断文件includes/configure.php是否存在,如果不存在,将会设置报错字符串,返回一个页面:require('includes/templates/template_default/templates/tpl_zc_install_suggested_default.php');
并退出。该页面内容大概是说:

您好,多谢使用 Zen Cart® 中文版

看到本页面有几个原因:

您是第一次使用 Zen Cart® 中文版 且还未正常安装。

如果是这样的话, 请先通过FTP上传 "zc_install" 目录,然后在浏览器中运行 zc_install/index.php (或者刷新本页面查看链接)。

您的
/includes/configure.php
/admin/includes/configure.php
文件中的路径设置不正确,或者数据库参数不正确。

如果您修改过 configure.php 文件,或者移动了安装目录,那么请更新设置。

可访问 Zen Cart® 中文论坛获取更多信息。
其他*重要*说明: includes/configure.php not found

开始安装 ...

安装说明请点这里: 文档
请先通过FTP上传 "zc_install" 目录,然后在浏览器中运行 zc_install/index.php (或者刷新本页面查看链接)。
Zen Cart® 中文论坛的新手上路栏目有基本的入门资料。

5、检查文件路径和结构是否正确
在上面的includes/configure.php中会定义一个常量:
define('DIR_FS_CATALOG', 'D:/PHPWeb/zencart/');
如果没有这个常量,或者,这个常量下的includes/class不是一个目录,则认为要么configure.php是无效的,要么zencart的文件结构不正确。此时也会返回那个zc_install_suggestz的页面。

6、加载includes/extra_configures下的所有配置文件,
大概有关于邮箱发送的,是否打印log等。

7、设置变量$loader_file='config.core.php';
然后require文件:includes/initsystem.php
这个initsystem.php文件是一个壳子,根据loader_file文件的内容,来自动加载loader_file里指定的文件。
1)首先判断auto_loaders/overrides/是否存在config.core.php文件,如果是,就设置base_dir为auto_loaders/overrides/,否则,就是auto_loaders/。
判断base_dir目录下是否有config.core.php文件,如果有,就加载(include),没有,则不理会。
2)假设存在config.core.php文件,
这个文件定义了一个比较大的二维数组:
$autoLoadConfig[0][] = array('autoType'=>'class',
'loadFile'=>'class.base.php');
...
/**
* Breakpoint 180.
*
* require('includes/init_includes/init_header.php');
*
*/
$autoLoadConfig[180][] = array('autoType'=>'init_script',
'loadFile'=> 'init_header.php');

3)引入includes/auto_loaders下的php文件,如果在overrides目录下存在同名文件,则加载overrides下的同名文件。
这些文件都是在补充$autoLoadConfig这个变量。

8、再一次做检查,确定安装ok,
然后require('includes/autoload_func.php');
这个autoload_func.php就用来真正加载$autoLoadConfig这个数组里的所有文件。这些文件分布在includes/init_includes下,includes/classes下,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: