Beispiel #1
0
 /**
  * 判断是不是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);
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
    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)) {
Beispiel #4
0
 public function index($urlInfo)
 {
     //header('Location: ./fkb');
     ActionUtil::action('Help')->help($urlInfo);
     //$this->tpl();
 }
Beispiel #5
0
 public function index($urlInfo)
 {
     ActionUtil::action('Help')->help($urlInfo);
 }
Beispiel #6
0
 /**
  * 设置模板文件参数,要在输出模板文件之前执行。
  */
 public static function setTplArgs($tpl_args)
 {
     self::$tpl_args = $tpl_args;
 }