Esempio n. 1
0
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)) {
            $param = trim(trim($param), '-/');
            $path = '';
            foreach (explode('-', $param) as $p) {
                $p = trim($p, '/ \\');
                if (strcmp('', $p)) {
                    $path .= '/' . $p;
                }
            }
            $path = trim($path, '/');
            /*包含的文件除了可以是abc.php之类的以外,也可以是abc/def/ghi.php之类的。
             * 只要请求的文件名参数能够被系统识别出a-b-c-d的格式,就可以默认访问到PUBLIC_DIR_NAME/core/tpl/a/b/c/d.php。
             * 这样的文件名参数格式,在本系统中称之为标准格式。其中的“-”将被替换为“/”。
             * 对于【'r_^-fds \\--/gh'】之类的文件名参数,本系统可以将之解析为【r_^/fds/gh】(原参数中,有“-”和“--”,于是结果就有两条“/”。至于原参数中的“\\”和“/”,将被清除)。
             * 这种掺入无关字符(“\”、“/”)的做法,可以起到障眼的作用,使文件路径不易被猜解。
             */