WEB开发网
开发学院WEB开发PHP php $_SERVER['orig_script_name'] 阅读

php $_SERVER['orig_script_name']

 2010-11-02 17:02:34 来源:WEB开发网   
核心提示:主要有一下几点:1、该框架无文档;2、该框架源码中无注释;3、除了那帮主线开发人员我们部门很少有人熟悉使用;如果想使用这个框架做东西,只有一条路:看源码,php $_SERVER['orig_script_name'],先了解框架的实现原理,然后再用这个鸟玩意做东西

主要有一下几点:

1、该框架无文档;

2、该框架源码中无注释;

3、除了那帮主线开发人员我们部门很少有人熟悉使用;

如果想使用这个框架做东西,只有一条路:看源码,先了解框架的实现原理,然后再用这个鸟玩意做东西。

当我看到一个处理request的类的时候,如下代码映入眼帘:

php;">
 static function get_base_url(){


         $filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : '';


          if (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {


             $base_url = $_SERVER['ORIG_SCRIPT_NAME']; 


          } elseif (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) {


              $base_url = $_SERVER['SCRIPT_NAME'];


          } elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $filename) {


             $base_url = $_SERVER['PHP_SELF'];


          } else {


             $path    = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';


             $file    = isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '';


             $segs    = explode('/', trim($file, '/'));


             $segs    = array_reverse($segs);


             $index   = 0;


            $last    = count($segs);


            $base_url = '';


             do {


                 $seg = $segs[$index];


                 $base_url = '/' . $seg . $base_url;


                 ++$index;


             } while (($last > $index) && (false !== ($pos = strpos($path, $base_url))) && (0 != $pos));


         }


         


         $request_uri = self::get_request_uri();


         if (0 === strpos($request_uri, $base_url)) {


             return self::dirname($base_url);


         }


        if (0 === strpos($request_uri, dirname($base_url))) {


             return self::dirname($base_url);


         }


         


        $truncatedrequest_uri = $request_uri;


        if (($pos = strpos($request_uri, '?')) !== false) {


             $truncatedrequest_uri = substr($request_uri, 0, $pos);


         }


         


        $basename = basename($base_url);


         if (empty($basename) || !strpos($truncatedrequest_uri, $basename)) {


             return;


        }


         


        if ((strlen($request_uri) >= strlen($base_url))


         && ((false !== ($pos = strpos($request_uri, $base_url))) && ($pos !== 0)))  {


            $base_url = substr($request_uri, 0, $pos + strlen($base_url));


         }            


        return  rtrim(self::dirname($base_url), '/');


     }

 

1 2  下一页

Tags:php $_SERVER

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接