幻域竞界 - 全球网游活动速递站

首页 > 国际服专线 > PHP获取URL地址的一些坑

PHP获取URL地址的一些坑

在一些业务场景中,我们需要用到PHP去获取URL地址,度娘搜索了一下,发现都是同一种解决方案,如下:

代码语言:javascript复制#测试网址: http://localhost/blog/testurl.php?id=5

//获取域名或主机地址

echo $_SERVER['HTTP_HOST']."
"; #localhost

//获取网页地址

echo $_SERVER['PHP_SELF']."
"; #/blog/testurl.php

//获取网址参数

echo $_SERVER["QUERY_STRING"]."
"; #id=5

//获取用户代理

echo $_SERVER['HTTP_REFERER']."
";

//获取完整的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

//只取路径

$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];

echo dirname($url);

#http://localhost/blog其中,获取包含端口号的完整url中:

代码语言:javascript复制//包含端口号的完整url

echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

#http://localhost:80/blog/testurl.php?id=5这个代码是有一定局限性的,他只能获取域名下的url,如这种形式:

代码语言:javascript复制http://ma.my.com/staff?item=person&date=2016%2F12%2F05%E8%87%B32016%2F12%2F11如果是IP地址这种形式的url,IP地址是获取不到的:

代码语言:javascript复制http://119.24.205.83:81/staff?date=2016%2F12%2F19%E8%87%B32016%2F12%2F25&item=project获取出来是这样的:

代码语言:javascript复制http://_:81/staff?date=2016%2F12%2F19%E8%87%B32016%2F12%2F25&item=project所以,如果想要获取完整的URL,还是得使用这个(经检验,端口号也会获取到,是真正意义上的完整的URL):

代码语言:javascript复制//获取完整的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




怎么用手机充话费
王者荣耀人机挂机禁赛多久