php $_SERVER['ORIG_SCRIPT_NAME']
2014-09-29 11:03
330 查看
因为要做某项目的一个新功能,而这个新功能又是用公司新开发的框架做的。
该框架甚是NB啊,NB到什么地方那。主要有一下几点:
1、该框架无文档;
2、该框架源码中无注释;
3、除了那帮主线开发人员我们部门很少有人熟悉使用;
如果想使用这个框架做东西,只有一条路:看源码,先了解框架的实现原理,然后再用这个鸟玩意做东西。
当我看到一个处理request的类的时候,如下代码映入眼帘:
要学的东西真是太多了,今天第一次看见$_SERVER['ORIG_SCRIPT_NAME']这个变量。做什么的?还真不清楚。
以前我只是知道$_SERVER['SCRIPT_NAME'']这个变量。
我一向是追根究底,有什么不清楚的,如果不弄出来,难受啊。
用度娘搜索了下,见下面这段话:
这才恍然大悟啊。原来是这个原因啊。
看样子,想把php学好,学精还要大下一番功夫啊。
仅此为记。
转自:/article/6430510.html
该框架甚是NB啊,NB到什么地方那。主要有一下几点:
1、该框架无文档;
2、该框架源码中无注释;
3、除了那帮主线开发人员我们部门很少有人熟悉使用;
如果想使用这个框架做东西,只有一条路:看源码,先了解框架的实现原理,然后再用这个鸟玩意做东西。
当我看到一个处理request的类的时候,如下代码映入眼帘:
<span style="color:#333333;"> <?php static function get_base_url(){ $filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : ''; if (isset(</span><span style="color:#ff0000;">$_SERVER['ORIG_SCRIPT_NAME']</span><span style="color:#333333;">) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) { $base_url = $_SERVER['ORIG_SCRIPT_NAME']; } elseif (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) { 6 $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), '/'); }</span>
要学的东西真是太多了,今天第一次看见$_SERVER['ORIG_SCRIPT_NAME']这个变量。做什么的?还真不清楚。
以前我只是知道$_SERVER['SCRIPT_NAME'']这个变量。
我一向是追根究底,有什么不清楚的,如果不弄出来,难受啊。
用度娘搜索了下,见下面这段话:
看样子,想把php学好,学精还要大下一番功夫啊。
仅此为记。
转自:/article/6430510.html
相关文章推荐
- PHP $_SERVER[PHP_SELF],[SCRIPT_NAME], ['REQUEST_URI']
- $_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']和$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"]
- PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
- php $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['REQUEST_URI']区别
- $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']区别
- $_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']区别
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- apache php $_SERVER['SERVER_NAME']没有保存端口号的问题(解决)
- $_SERVER["REQUEST_URI"],["QUERY_STRING"],["PHP_SELF"] ,["SCRIPT_NAME"]用法
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- PHP $_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]、$_SERVER["SCRIPT_NAME"]和$_SERVER["PHP_SELF"]
- PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别
- PHP $_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]
- PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SERVER["PHP_SELF"]
- 关于IIS中Request.ServerVariables("SCRIPT_NAME")的bug
- PHP获取当前url路径的函数及服务器变量:$_SERVER['.....']
- SQL Server could not bring database 'db_name' online (sybase)
- php几个预定义变量$_SERVER['DOCUMENT_ROOT']
- $_SERVER['SERVER_NAME']带来的烦恼