<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SERVER &#8211; LPC影子技术分享</title>
	<atom:link href="https://www.mudbest.com/tag/server/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mudbest.com</link>
	<description>行影不离,忘之却步.</description>
	<lastBuildDate>Mon, 01 Oct 2012 12:03:53 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>PHP获取当前url路径的函数及服务器变量</title>
		<link>https://www.mudbest.com/php%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8durl%e8%b7%af%e5%be%84%e7%9a%84%e5%87%bd%e6%95%b0%e5%8f%8a%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%8f%98%e9%87%8f/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 31 Mar 2011 03:04:30 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SERVER]]></category>
		<guid isPermaLink="false">http://www.mudbest.com/?p=520</guid>

					<description><![CDATA[1，$_SERVER[&#8220;QUERY_STRING&#8221;] 说明：查询(query)的字符串 ... <a title="PHP获取当前url路径的函数及服务器变量" class="read-more" href="https://www.mudbest.com/php%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8durl%e8%b7%af%e5%be%84%e7%9a%84%e5%87%bd%e6%95%b0%e5%8f%8a%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%8f%98%e9%87%8f/" aria-label="阅读 PHP获取当前url路径的函数及服务器变量">阅读更多</a>]]></description>
										<content:encoded><![CDATA[<p>1，$_SERVER[&#8220;QUERY_STRING&#8221;]<br />
说明：查询(query)的字符串</p>
<p>2，$_SERVER[&#8220;REQUEST_URI&#8221;]<br />
说明：访问此页面所需的URI</p>
<p>3，$_SERVER[&#8220;SCRIPT_NAME&#8221;]<br />
说明：包含当前脚本的路径</p>
<p>4，$_SERVER[&#8220;PHP_SELF&#8221;]<br />
说明：当前正在执行脚本的文件名</p>
<p>实例：<br />
1，http://www.mudbest.com/ (直接打开主页)<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = &#8220;&#8221;<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = &#8220;/&#8221;<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = &#8220;/index.php&#8221;<br />
$_SERVER[&#8220;PHP_SELF&#8221;]     = &#8220;/index.php&#8221;</p>
<p>2，http://www.mudbest.com/?p=222<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = &#8220;p=222&#8221;<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = &#8220;/?p=222&#8221;<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = &#8220;/index.php&#8221;<br />
$_SERVER[&#8220;PHP_SELF&#8221;]     = &#8220;/index.php&#8221;</p>
<p>3，http://www.mudbest.com/index.php?p=222&#038;q=biuuu<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = &#8220;p=222&#038;q=php&#8221;<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = &#8220;/index.php?p=222&#038;q=php&#8221;<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = &#8220;/index.php&#8221;<br />
$_SERVER[&#8220;PHP_SELF&#8221;]     = &#8220;/index.php&#8221;<br />
$_SERVER[&#8220;QUERY_STRING&#8221;]获取查询语句，实例中可知，获取<span id="more-520"></span>的是?后面的值<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] 获取http://www.mudbest.com后面的值，包括/<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] 获取当前脚本的路径，如：index.php<br />
$_SERVER[&#8220;PHP_SELF&#8221;] 当前正在执行脚本的文件名</p>
<p>当前url：&#8221;http://&#8221;.$_SERVER[&#8216;HTTP_HOST&#8217;].$_SERVER[&#8216;PHP_SELF&#8217;]</p>
<p>总结一下，对于QUERY_STRING，REQUEST_URI，SCRIPT_NAME和PHP_SELF，深入了解将有利于我们在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中QUERY_STRING，REQUEST_URI，SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。</p>
<p>uchome系统中处理技巧：</p>
<pre class="brush: php; title: ; notranslate">
//处理REQUEST_URI
if(!isset($_SERVER&#x5B;'REQUEST_URI'])) {  
    $_SERVER&#x5B;'REQUEST_URI'] = $_SERVER&#x5B;'PHP_SELF'];
    if(isset($_SERVER&#x5B;'QUERY_STRING'])) $_SERVER&#x5B;'REQUEST_URI'] .= '?'.$_SERVER&#x5B;'QUERY_STRING'];
}
if($_SERVER&#x5B;'REQUEST_URI']) {
    $temp = urldecode($_SERVER&#x5B;'REQUEST_URI']);
    if(strexists($temp, '&lt;') || strexists($temp, '&quot;')) {
        $_GET = shtmlspecialchars($_GET);//XSS
     }
}
</pre>
<pre class="brush: php; title: ; notranslate">
&lt;?php
echo $_SERVER&#x5B;'DOCUMENT_ROOT'].&quot;&lt;br&gt;&quot;; //获得服务器文档根变量
echo $_SERVER&#x5B;'PHP_SELF'].&quot;&lt;br&gt;&quot;; //获得执行该代码的文件服务器绝对路径的变量
echo __FILE__.&quot;&lt;br&gt;&quot;; //获得文件的文件系统绝对路径的变量
echo dirname(__FILE__); //获得文件所在的文件夹路径的函数
?&gt;
</pre>
<p>//server函数<br />
$_SERVER[&#8220;HTTP_REFERER&#8221;]=http://localhost/lianxi/<br />
$_SERVER[&#8220;HTTP_ACCEPT_LANGUAGE&#8221;]=zh-cn<br />
$_SERVER[&#8220;HTTP_ACCEPT_ENCODING&#8221;]=gzip, deflate<br />
$_SERVER[&#8220;HTTP_USER_AGENT&#8221;]=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)<br />
$_SERVER[&#8220;HTTP_HOST&#8221;]=localhost<br />
$_SERVER[&#8220;HTTP_CONNECTION&#8221;]=Keep-Alive<br />
$_SERVER[&#8220;PATH&#8221;]=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\php;C:\php\ext<br />
$_SERVER[&#8220;SystemRoot&#8221;]=C:\WINDOWS<br />
$_SERVER[&#8220;COMSPEC&#8221;]=C:\WINDOWS\system32\cmd.exe<br />
$_SERVER[&#8220;PATHEXT&#8221;]=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH<br />
$_SERVER[&#8220;WINDIR&#8221;]=C:\WINDOWS<br />
$_SERVER[&#8220;SERVER_SIGNATURE&#8221;]=<br />
Apache/2.0.55 (Win32) PHP/5.1.1 Server at localhost Port 80 \\使用的何服务器<br />
$_SERVER[&#8220;SERVER_SOFTWARE&#8221;]=Apache/2.0.55 (Win32) PHP/5.1.1<br />
$_SERVER[&#8220;SERVER_NAME&#8221;]=localhost \\服务器名称<br />
$_SERVER[&#8220;SERVER_ADDR&#8221;]=127.0.0.1<br />
$_SERVER[&#8220;SERVER_PORT&#8221;]=80 \\服务器端口<br />
$_SERVER[&#8220;REMOTE_ADDR&#8221;]=127.0.0.1<br />
$_SERVER[&#8220;DOCUMENT_ROOT&#8221;]=D:/lianxi \\网站的主目录<br />
$_SERVER[&#8220;SERVER_ADMIN&#8221;]=sss@163.com \\安装APACHE时设置的邮箱<br />
$_SERVER[&#8220;SCRIPT_FILENAME&#8221;]=D:/lianxi/lianxi/servervalues.php \\当前的网页的绝对路径，<br />
$_SERVER[&#8220;REMOTE_PORT&#8221;]=1076 \\远程端口<br />
$_SERVER[&#8220;GATEWAY_INTERFACE&#8221;]=CGI/1.1<br />
$_SERVER[&#8220;SERVER_PROTOCOL&#8221;]=HTTP/1.1<br />
$_SERVER[&#8220;REQUEST_METHOD&#8221;]=GET<br />
$_SERVER[&#8220;QUERY_STRING&#8221;]=\\获取？号后面的内容<br />
$_SERVER[&#8220;REQUEST_URI&#8221;]=例子：/lianxi/servervalues.php?a=1&#038;b=2<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;]=例子：/lianxi/servervalues.php<br />
$_SERVER[&#8220;PHP_SELF&#8221;]=/lianxi/servervalues.php \\返回当前网页的相对路径.<br />
$_SERVER[&#8220;REQUEST_TIME&#8221;]=1179190013 \\运行时间 单位为十万分之一毫秒<br />
$_SERVER[&#8220;argv&#8221;]=Array<br />
$_SERVER[&#8220;argc&#8221;]=0<br />
1，$_SERVER[&#8220;QUERY_STRING&#8221;]<br />
说明：查询(query)的字符串<br />
2，$_SERVER[&#8220;REQUEST_URI&#8221;]<br />
说明：访问此页面所需的URI<br />
3，$_SERVER[&#8220;SCRIPT_NAME&#8221;]<br />
说明：包含当前脚本的路径<br />
4，$_SERVER[&#8220;PHP_SELF&#8221;]<br />
说明：当前正在执行脚本的文件名<br />
实例：<br />
1，http://www.mudbest.com/ (直接打开主页)<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = “”<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = “/”<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = “/index.php”<br />
$_SERVER[&#8220;PHP_SELF&#8221;] = “/index.php”<br />
2，http://www.mudbest.com/?p=222 (附带查询)<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = “p=222″<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = “/?p=222″<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = “/index.php”<br />
$_SERVER[&#8220;PHP_SELF&#8221;] = “/index.php”<br />
3，http://www.mudbest.com/index.php?p=222&#038;q=php<br />
结果：<br />
$_SERVER[&#8220;QUERY_STRING&#8221;] = “p=222&#038;q=php”<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] = “/index.php?p=222&#038;q=php”<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] = “/index.php”<br />
$_SERVER[&#8220;PHP_SELF&#8221;] = “/index.php”<br />
$_SERVER[&#8220;QUERY_STRING&#8221;]获取查询语句，实例中可知，获取的是?后面的值<br />
$_SERVER[&#8220;REQUEST_URI&#8221;] 获取http://www.mudbest.com后面的值，包括/<br />
$_SERVER[&#8220;SCRIPT_NAME&#8221;] 获取当前脚本的路径，如：index.php<br />
$_SERVER[&#8220;PHP_SELF&#8221;] 当前正在执行脚本的文件名</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/**
* __FILE__ ,
* getcwd(),
$_SERVER&#x5B;&quot;REQUEST_URI&quot;],
$_SERVER&#x5B;&quot;SCRIPT_NAME&quot;],
$_SERVER&#x5B;&quot;PHP_SELF&quot;],
$_SERVER&#x5B;&quot;SCRIPT_FILENAME&quot;],
来观察一下这些变量或函数的异同.
假设有一个请求地址为: http://localhost:8080/test.php/age=20
而test.php 的完整路径是: D:/server/www/example/test.php
1) getcwd()
将得到浏览器请求的页面文件所在的目录. 即test.php 文件所在的目录: D:/server/www/example/ ,
如果在test.php 执行了 require 或 include 语句, 比如 inculde(”test_dir/test2.php”),
那么在 test2.php 里 getcwd()函数 返回的也将是 test.php 所在的目录.
2) __FILE__
一个魔术变量, 用它将得到 __FILE__ 变量所在文件的完整路径,
比如: test.php 里 __FILE__ 将得到 D:/server/www/example/test.php ,
test_dir/test2.php 里的 __FILE__ 将得到 D:/server/www/example/test_dir/test2.php

3) $_SERVER&#x5B;&quot;SCRIPT_FILENAME&quot;]
将得到浏览器请求的页面文件的完整路径.
test.php 和 test_dir/test2.php 里用 $_SERVER&#x5B;&quot;SCRIPT_NAME&quot;] 都将得到 D:/server/www/example/test.php.

4) $_SERVER&#x5B;&quot;SCRIPT_NAME&quot;]
将得到浏览器请求的页面文件的文件名,注意: 与 $_SERVER&#x5B;&quot;SCRIPT_NAME&quot;] 不同, 此变量只得到文件名而不包含路径,
在test.php 与 test_dir/test2.php 用$_SERVER&#x5B;&quot;SCRIPT_NAME&quot;] 得到的都将是 test.php.
当然, 在test.php 与 test_dir/test2.php 执行 basename($_SERVER&#x5B;&quot;SCRIPT_FILENAME&quot;]) 与 $_SERVER&#x5B;&quot;SCRIPT_NAME&quot;] 相同.
执行 在test.php 与 test_dir/test2.php 执行 realpath(”test.php”) 得到的结果与 $_SERVER&#x5B;&quot;SCRIPT_FILENAME&quot;] 相同.

5) $_SERVER&#x5B;&quot;PHP_SELF&quot;]
将得到浏览器请求页面的文件名, 并剥掉问号 ? 后的内容, 注意:不包含路径,
比如在客户端里请求 http://localhost:8080/test.php?age=20&amp;name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER&#x5B;&quot;PHP_SELF&quot;] 都将得到 “test.php”。“age=20&amp;name=Tom”被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&amp;name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER&#x5B;&quot;PHP_SELF&quot;] 都将得到 “test.php/age=20&amp;name=Tom”。

6) $_SERVER&#x5B;&quot;REQUEST_URI&quot;]
将得到浏览器请求页面的文件名, 以及文件名之后的所有内容(注意: 井号 # 之后的内容将被略去),
比如在客户端里请求 http://localhost:8080/test.php?age=20&amp;name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER&#x5B;&quot;REUEST_URI&quot;] 都将得到 “test.php”。“age=20&amp;name=Tom”被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&amp;name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER&#x5B;&quot;REQUEST_URI&quot;] 都将得到 “test.php/age=20&amp;name=Tom”。
*/

// test.php:
echo “test1.php variables &lt;br /&gt;”;
echo “getcwd: “, getcwd(), “&lt;br /&gt;”;
echo “__FILE__: “, __FILE__, “&lt;br /&gt;”;
echo “REQUEST_URI: “, $_SERVER&#x5B;&quot;REQUEST_URI&quot;], “&lt;br /&gt;”;
echo “SCRIPT_NAME: “, $_SERVER&#x5B;&quot;SCRIPT_NAME&quot;], “&lt;br /&gt;”;
echo “PHP_SELF: “, $_SERVER&#x5B;&quot;PHP_SELF&quot;], “&lt;br /&gt;”;
echo “SCRIPT_FILENAME “, $_SERVER&#x5B;&quot;SCRIPT_FILENAME&quot;] , “&lt;br /&gt;”;

// 把 test2.php 包含进来, 在 test2.php 里输出上面的变量,看有什么不同:
include_once(”test2/test2.php”);
?&gt;
</pre>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
