/** * 判断是不是URL指令 * 参数:URL参数经“|”分割后的第一个字符串 */ public static function isUrlShell(&$param) { $shells = array(); foreach (ActionUtil::numOfShellArgs() as $action => $funcs) { foreach ($funcs as $func => $argsNum) { $shells[] = $func; } } if (!in_array($param, $shells)) { $flag = 0; //修正有误的指令大小写,如果存在这样的情况 foreach ($shells as $shell) { if (0 == strcasecmp($param, $shell)) { $param = $shell; $flag = 1; } } //指令确实不存在 if (!$flag) { return false; } } return true; // return in_array($param, $shells); }
private static function globalFilter_inner_tool($arule, $srule, $de_srule) { $container = array(); foreach ($arule as $action) { if (!ActionUtil::isActionExist($action)) { continue; } //过滤掉不合法的Action名 foreach (AiUrlShell::$shellArgs[$action] as $key => $value) { $container[] = $key; } } foreach ($srule as $s) { $container[] = $s; } foreach ($de_srule as $s) { foreach (array_keys($container, $s) as $key) { unset($container[$key]); } } return $container; }
die; } /* * 分析URL参数 */ $urlInfo = UrlUtil::analyseUrlParam($_GET); // var_dump($urlInfo); $_SESSION['urlInfo'] = $urlInfo; /* * 选择性地执行全局过滤器 */ FilterUtil::globalFilter($urlInfo); /* * 根据URL信息调度 到 对应的[模块——操作]中 */ if (!ActionUtil::invokeAction($urlInfo)) { // echo ("<hr/>如果你看到这一行提示,则说明没有被调度到ActionUtil : : numOfShellArgs(){}所注册的Action方法。<hr/>"); // var_dump($urlInfo); /* 这里可再添加其它调度方式的代码【已被常规调度的有:0,1,3,4。剩余的参数状态有:2,5和 [没有注册shell或shell参数个数不符] 的状态3】。 * 一般人没必要利用这个地方,你要是读懂了源代码,就任你用! * 本框架的设计者对源码很熟悉,所以就把这个分支用作普通模板输出啦! * 如果你输入的链接[ http://server.com/ItemName/?xxx=abc ]中的abc不是URL指令, * 而且还执行到此处的时候,系统就认定这个abc是用来访问abc.php这个页面的。 * 本系统用于输出到客户端的页面默认存放于/PUBLIC_DIR_NAME/core/tpl/other/ 目录,要自定义存放位置,则需配置 [ 模板目录路径 OTHER_TEMPLATE_DIR @ /core/lib/base/env__.php ]。 * 以上输入的链接将默认访问到 /PUBLIC_DIR_NAME/core/tpl/other/abc.php 。 * 以上得到的参数'abc'的取法:$urlInfo['params'][0]。取出该参数之前,要确保$urlInfo['params']非null,并且也要确保count($urlInfo['params'])非0,以及$urlInfo['params'][0]非null. * 接下来的就是页面[模板]输出的代码: */ if (null != $urlInfo['params'] && 0 != count($urlInfo['params']) && null != $urlInfo['params'][0]) { $param = $urlInfo['params'][0]; if (false === UrlUtil::isUrlShell($param)) {
public function index($urlInfo) { //header('Location: ./fkb'); ActionUtil::action('Help')->help($urlInfo); //$this->tpl(); }
public function index($urlInfo) { ActionUtil::action('Help')->help($urlInfo); }
/** * 设置模板文件参数,要在输出模板文件之前执行。 */ public static function setTplArgs($tpl_args) { self::$tpl_args = $tpl_args; }