Ejemplo n.º 1
0
 /**
  * 确定请求的完整 URL
  *
  * 几个示例:
  *
  * <ul>
  *   <li>请求 http://www.example.com/index.php?controller=posts&action=create</li>
  *   <li>返回 /index.php?controller=posts&action=create</li>
  * </ul>
  * <ul>
  *   <li>请求 http://www.example.com/news/index.php?controller=posts&action=create</li>
  *   <li>返回 /news/index.php?controller=posts&action=create</li>
  * </ul>
  * <ul>
  *   <li>请求 http://www.example.com/index.php/posts/create</li>
  *   <li>返回 /index.php/posts/create</li>
  * </ul>
  * <ul>
  *   <li>请求 http://www.example.com/news/show/id/1</li>
  *   <li>返回 /news/show/id/1</li>
  * </ul>
  *
  * 此方法参考 Zend Framework 实现。
  *
  * @return string 请求的完整 URL
  */
 function requestUri()
 {
     if (self::$_request_uri) {
         return self::$_request_uri;
     }
     if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
         $uri = $_SERVER['HTTP_X_REWRITE_URL'];
     } elseif (isset($_SERVER['REQUEST_URI'])) {
         $uri = $_SERVER['REQUEST_URI'];
     } elseif (isset($_SERVER['ORIG_PATH_INFO'])) {
         $uri = $_SERVER['ORIG_PATH_INFO'];
         if (!empty($_SERVER['QUERY_STRING'])) {
             $uri .= '?' . $_SERVER['QUERY_STRING'];
         }
     } else {
         $uri = '';
     }
     self::$_request_uri = $uri;
     return $uri;
 }
Ejemplo n.º 2
0
 /**
  * 确定 REQUEST_URI
  *
  * @return string
  */
 function getRequestUri()
 {
     if (self::$_request_uri) {
         return self::$_request_uri;
     }
     if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
         // check this first so IIS will catch
         $uri = $_SERVER['HTTP_X_REWRITE_URL'];
     } elseif (isset($_SERVER['REQUEST_URI'])) {
         $uri = $_SERVER['REQUEST_URI'];
     } elseif (isset($_SERVER['ORIG_PATH_INFO'])) {
         // IIS 5.0, PHP as CGI
         $uri = $_SERVER['ORIG_PATH_INFO'];
         if (!empty($_SERVER['QUERY_STRING'])) {
             $uri .= '?' . $_SERVER['QUERY_STRING'];
         }
     } else {
         $uri = '';
     }
     self::$_request_uri = $uri;
     return $uri;
 }