示例#1
0
 /**
  * Return the URI of the request regardless of the server
  *
  * @return  KHttpUri    A KHttpUri object
  */
 public static function url()
 {
     if (!isset(self::$_uri)) {
         /*
          * Since we are assigning the URI from the server variables, we first need
          * to determine if we are running on apache or IIS.  If PHP_SELF and REQUEST_URI
          * are present, we will assume we are running on apache.
          */
         if (!empty($_SERVER['PHP_SELF']) && !empty($_SERVER['REQUEST_URI'])) {
             /*
              * To build the entire URI we need to prepend the protocol, and the http host
              * to the URI string.
              */
             $url = self::protocol() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
             /*
              * Since we do not have REQUEST_URI to work with, we will assume we are
              * running on IIS and will therefore need to work some magic with the SCRIPT_NAME and
              * QUERY_STRING environment variables.
              */
         } else {
             // IIS uses the SCRIPT_NAME variable instead of a REQUEST_URI variable
             $url = self::protocol() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
             // If the query string exists append it to the URI string
             if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
                 $url .= '?' . $_SERVER['QUERY_STRING'];
             }
         }
         // Sanitize the url since we can't trust the server var
         $url = KFactory::get('lib.koowa.filter.url')->sanitize($url);
         // Create the URI object
         self::$_uri = KFactory::tmp('lib.koowa.http.uri', array('uri' => $url));
     }
     return self::$_uri;
 }