php获取url上的参数

//只获取路径
echo ‘http://’.$_SERVER[‘HTTP_HOST’].substr($_SERVER[‘REQUEST_URI’], 0, strrpos($_SERVER[‘REQUEST_URI’], ‘/’) + 1);
#结果例:http://www.abcd.com/blog/

//获取域名或主机地址
echo $_SERVER[‘HTTP_HOST’].”<br>”; #结果例:localhost

//获取域名后的网页地址
echo $_SERVER[‘PHP_SELF’].”<br>”; #结果例:/blog/testurl.php

//获取网址上的参数
echo $_SERVER[“QUERY_STRING”].”<br>”; #结果例:id=5

//获取完整的url
echo ‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
echo ‘http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘PHP_SELF’].’?’.$_SERVER[‘QUERY_STRING’];
#结果例:http://localhost/blog/testurl.php?id=5

//获取包含端口号的完整url
echo ‘http://’.$_SERVER[‘SERVER_NAME’].’:’.$_SERVER[“SERVER_PORT”].$_SERVER[“REQUEST_URI”];
#结果例:http://localhost:80/blog/testurl.php?id=5
—————————————————-

注:上面的方法有时用在某些场景下会语法错误,在最前面加个.一般就好了,例:
elseif($ac==2)
{
echo “document.write(‘<img src=”.’http://’.$_SERVER[‘HTTP_HOST’].chatu($rid).”>’)”;
}

src=”.这里不加个. 会语法错误,加个.后正常

—————————————————-
$_SERVER[‘HTTP_HOST’]和$_SERVER[‘SERVER_NAME’]的区别

HTTP_HOST是跟随浏览器的
你在浏览器用http://localhost访问,则HTTP_HOST的值为localhost,而你用www.a.com访问,HTTP_HOST的值就是www.a.com,你用IP地址访问,HTTP_HOST的值就是IP

SERVER_NAME是跟随服务器的,只有一个,是服务器端httpd.conf中指定的
SERVER_NAME不会变化,Apache的httpd.conf中设置为什么,显示的就是什么。所以一般情况都是用HTTP_HOST