专栏首页开发经验记录PHP获取URL地址的一些坑

PHP获取URL地址的一些坑

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

#测试网址:     http://localhost/blog/testurl.php?id=5

//获取域名或主机地址 
echo $_SERVER['HTTP_HOST']."<br>"; #localhost

//获取网页地址 
echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php

//获取网址参数 
echo $_SERVER["QUERY_STRING"]."<br>"; #id=5

//获取用户代理 
echo $_SERVER['HTTP_REFERER']."<br>"; 

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

//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
#http://localhost:80/blog/testurl.php?id=5

这个代码是有一定局限性的,他只能获取域名下的url,如这种形式:

http://ma.my.com/staff?item=person&date=2016%2F12%2F05%E8%87%B32016%2F12%2F11

如果是IP地址这种形式的url,IP地址是获取不到的:

http://119.24.205.83:81/staff?date=2016%2F12%2F19%E8%87%B32016%2F12%2F25&item=project

获取出来是这样的:

http://_:81/staff?date=2016%2F12%2F19%E8%87%B32016%2F12%2F25&item=project

所以,如果想要获取完整的URL,还是得使用这个(经检验,端口号也会获取到,是真正意义上的完整的URL):

//获取完整的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
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://my.oschina.net/hjchhx/blog复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • PHP获取域名等URL地址

    参考URL:https://www.w3h5.com/PHP-URL.php?num=123

    德顺
  • PHP 获取 IP 地址形式的完整 URL 页面网址

    PHP 获取包含端口号的完整 URL 中,$_SERVER 有些写法只能获取域名形式的 URL ,采用 IP 地址的 URL 是获取不到的。

    Yangsh888
  • PHP实现获取url地址中顶级域名的方法示例

    本文实例讲述了PHP实现获取url地址中顶级域名的方法。分享给大家供大家参考,具体如下:

    砸漏
  • 获取URL地址中的GET参数

    /*-----------------实现1--------------------*/ function getPar(par){ //获取当前URL...

    似水的流年
  • 获取URL地址中的GET参数

    /*-----------------实现1--------------------*/ function getPar(par){ //获取当前URL...

    似水的流年
  • js获取url地址中的参数

    <script type="text/javascript"> function GetQueryString(name) { var ...

    Java中文社群-磊哥
  • 获取URL地址中的GET参数

    似水的流年
  • PHP获取当前页面(网页)完整URL链接地址代码

    示例链接:https://www.xxx.com/example.php?id=1

    一身执念
  • 封装方法,获取url地址上的参数

    前端江太公
  • 获取 WordPress 路径和 URl 地址的函数大全

    为了 WordPress 更快的运行直接写了绝对地址,其实是不好的,如果修改了 WordPress 程序的地址,编写的这个插件或者是主题就只有你自己用,别人无法...

    Yangsh888
  • [转载]javascript/jquery获取地址栏url参数的方法

    本篇文章主要是对javascript/jquery获取地址栏url参数的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    小小鱼儿小小林
  • WordPress 获取当前页面 URL 地址的方法

    通过 WordPress 原生的函数来,或者自定义函数,都可以获取当前页面的 URL 地址。

    Yangsh888
  • 使用JS获取上一页的url地址

    上面的代码其实就可以满足我们返回上一页面的需求,但是如果我们是从别的地方打开此链接的时候事实上是没有上一页的,为了提升用户的体验,我们可以使用js来控制当我们点...

    全栈程序员站长
  • Python+selenium 自动化-获取当前页面的url地址,打开指定的url地址

    非常简单,driver.current_url 就能获取当前页面的 url 地址。

    小蓝枣
  • PHP 获取指定 URL 页面中的所有链接

    以下代码可以获取到指定 URL 页面中的所有链接,即所有 a 标签的 href 属性:

    Z4
  • php获取server端mac和clientmac的地址[通俗易懂]

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116355.html原文链接:https://javaforall.cn

    全栈程序员站长
  • 织梦DedeCms获取当前页面URL地址的调用方法

    织梦内容页如何调用当前页面url?相信很多对织梦感兴趣的朋友都会去考虑这个问题:在文章内容中加入本文链接,除了 保护自己版权外还可以增加网站的外链收录。网上这...

    全栈程序员站长

扫码关注腾讯云开发者

领取腾讯云代金券