首页 新闻 搜索 专区 学院

哪位高手帮忙看下 这些代码是什么功能

0
[已解决问题] 解决于 2011-07-02 08:48

中文的注释是我自己翻译的  要是有错的地方 请指点下 小弟不胜感激

载了个bbpress  想学习下 一开始就遇到了这个问题

前两个判断 IIS版本还看的懂(网络上资料查的 或许是我理解错误)

到是到了第三个就看不懂了  请教下高手 这些代码的目的是做什么

感觉有点像ajax判断浏览器类型有几分相似之处

 

//如果$_SERVER['REQUEST_URI']内容为空 则运行
if ( empty( $_SERVER['REQUEST_URI'] ) ) {

 //判定是否是IIS7  并且赋值$_SERVER['REQUEST_URI']
 if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
  $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
 }
  //如果不是IIS7  判定是否是IIS6  并且赋值$_SERVER['REQUEST_URI']
 else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
  $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
 }
 else
 {
  // 使用ORIG_PATH_INFO如果没有就使用PATH_INFO
  if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
   $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];

  // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
  if ( isset($_SERVER['PATH_INFO']) ) {
   if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
    $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
   else
    $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
  }

  // Append the query string if it exists and isn't null
  if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
   $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
  }
 }
}

 

 

问题补充: 上下文 和这个没多大关系 这个可以算是一个独立出来的东西 大概的意思是判断服务器 端 用的是什么版本的软件之类的 以供其他部分的代码使用 这就是一个方法了 返回值就是 $_SERVER['REQUEST_URI']
Niulx的主页 Niulx | 初学一级 | 园豆:5
提问于:2010-12-18 21:10
< >
分享
最佳答案
0

PHP有很多预定义的环境变量 对于REQUEST_URI来说 使用率是非常高的..

但是有一个问题就是 只有APACHE才有REQUEST_URI这个预定义变量(这么说可能太绝对了)

换个说法就是 只有支持 PATH_INFO的服务器才支持REQUEST_URI;

为了程序的兼容性. 就需要判断当前服务器环境.然后给REQUEST_URI分配默认值 避免

由于不同服务器此值不存在的情况

斯人- | 菜鸟二级 |园豆:235 | 2011-07-02 00:06
谢谢啊
Niulx | 园豆:5 (初学一级) | 2011-07-02 08:48
客气..
斯人- | 园豆:235 (菜鸟二级) | 2011-07-02 11:28
其他回答(2)
0

这个要结合上下文环境才能判断,光凭这段代码看不出来

artwl | 园豆:16526 (专家六级) | 2010-12-19 14:49
0

去网上找对应函数的作用,或者把需要的参数输出来,和调试一个意思。

Astar | 园豆:40805 (高人七级) | 2010-12-20 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册