コード例 #1
0
ファイル: Helper.php プロジェクト: admpub/MicroPHP
 /**
 * 获取入口文件所在目录url路径。
 只能在web访问时使用,在命令行下面会抛出异常。
 *
 * @param type $subpath 子路径或者文件路径,如果非空就会被附加在入口文件所在目录的后面
 * @return type
 * @throws Exception
 */
 public static function urlPath($subpath = null)
 {
     if (CoreInput::isCli()) {
         throw new Exception('function urlPath() can not be used in cli mode');
     } else {
         $old_path = getcwd();
         $root = str_replace(array('/', '\\'), '/', CoreInput::server('DOCUMENT_ROOT'));
         chdir($root);
         $root = getcwd();
         $root = str_replace(array('/', '\\'), '/', $root);
         chdir($old_path);
         $path = self::path($subpath);
         return str_replace($root, '', $path);
     }
 }
コード例 #2
0
ファイル: Router.php プロジェクト: admpub/MicroPHP
 private static function getQueryStr()
 {
     $system = CoreLoader::$system;
     // 命令行运行检查
     if (CoreInput::isCli()) {
         global $argv;
         $pathinfo_query = isset($argv[1]) ? $argv[1] : '';
     } else {
         $pathinfo = @parse_url($_SERVER['REQUEST_URI']);
         if (empty($pathinfo)) {
             if ($system['debug']) {
                 Fn::trigger404('request parse error:' . $_SERVER['REQUEST_URI']);
             } else {
                 Fn::trigger404();
             }
         }
         // pathinfo模式下有?,那么$pathinfo['query']也是非空的,这个时候查询字符串是PATH_INFO和query
         $query_str = empty($pathinfo['query']) ? '' : $pathinfo['query'];
         $pathinfo_query = empty($_SERVER['PATH_INFO']) ? $query_str : $_SERVER['PATH_INFO'] . '&' . $query_str;
     }
     if ($pathinfo_query) {
         $pathinfo_query = trim($pathinfo_query, '/&');
     }
     // urldecode 解码所有的参数名,解决get表单会编码参数名称的问题
     $pq = $_pq = array();
     $_pq = explode('&', $pathinfo_query);
     foreach ($_pq as $value) {
         $p = explode('=', $value);
         if (isset($p[0])) {
             $p[0] = urldecode($p[0]);
         }
         $pq[] = implode('=', $p);
     }
     $pathinfo_query = implode('&', $pq);
     return $pathinfo_query;
 }