Esempio n. 1
0
 public static function getBaseUri()
 {
     if (self::$_Baseuri) {
         return self::$_Baseuri;
     }
     $filename = basename($_SERVER['SCRIPT_FILENAME']);
     if (basename($_SERVER['SCRIPT_NAME']) === $filename) {
         $url = $_SERVER['SCRIPT_NAME'];
     } elseif (basename($_SERVER['PHP_SELF']) === $filename) {
         $url = $_SERVER['PHP_SELF'];
     } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
         $url = $_SERVER['ORIG_SCRIPT_NAME'];
     } else {
         $path = $_SERVER['PHP_SELF'];
         $segs = explode('/', trim($_SERVER['SCRIPT_FILENAME'], '/'));
         $segs = array_reverse($segs);
         $index = 0;
         $last = count($segs);
         $url = '';
         do {
             $seg = $segs[$index];
             $url = '/' . $seg . $url;
             ++$index;
         } while ($last > $index && false !== ($pos = strpos($path, $url)) && 0 != $pos);
     }
     $request = self::getRequestUri();
     if (0 === strpos($request, dirname($url))) {
         self::$_Baseuri = rtrim(dirname($url), '/') . '/';
     } elseif (!strpos($request, basename($url))) {
         return '';
     } else {
         if (strlen($request) >= strlen($url) && (false !== ($pos = strpos($request, $url)) && $pos !== 0)) {
             $url = substr($request, 0, $pos + strlen($url));
         }
         self::$_Baseuri = self::setHtmlChars(rtrim($url, '/') . '/');
     }
     return self::$_Baseuri;
 }