PHP获取当前页面完整URL地址

如何在PHP中获取完整的请求URL? 在PHP中,我们经常需要获取当前请求的完整URL,包括协议、域名、路径和查询参数等信息。综上所述,根据不同的使用场景,我们可以选择适合的方法来获取完整的请求URL。此外,如果网站使用了代理服务器或负载均衡器等中间件,那么获取的URL可能会受到这些中间件的影响。变量包含了当前请求的引用页面的URL。这段代码将根据当前请求的协议(HTTP或HTTPS)、主机名和请求URI构建完整的URL,并将其打印出来。这段代码将根据当前请求的协议(HTTP或HTTPS)、服务器名和PHP自身的文件路径构建完整的URL。 阅读详情

示例一:

<?php
// 说明:获取完整URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
  }
  return $pageURL;
}
?>

定义该函数之后就可以直接调用了:

<?php
 echo curPageURL();
?>

上面的函数可以获取当前页面完整的URL,即你在浏览器地址栏看到的内容。但是,有时候我们不想要URL中的参数( ? 号后面的内容),如:http://www.ludou.org/hello.html?u=123,只想获取http://www.ludou.org/hello.html,你可以将以上函数按示例二修改。

示例二:

<?php
// 说明:获取无参数URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  $this_page = $_SERVER["REQUEST_URI"];
  
  // 只取 ? 前面的内容
  if (strpos($this_page, "?") !== false)
  {
    $this_pages = explode("?", $this_page);
    $this_page = reset($this_pages);
  }

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $this_page;
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $this_page;
  }
  return $pageURL;
}
?>

当然也可以采用 $_SERVER['PHP_SELF'] (该变量不返回URL中的参数)

示例三:

<?php
// 说明:获取无参数URL

function curPageURL() 
{
  $pageURL = 'http';

  if ($_SERVER["HTTPS"] == "on") 
  {
    $pageURL .= "s";
  }
  $pageURL .= "://";

  if ($_SERVER["SERVER_PORT"] != "80") 
  {
    $pageURL .= $_SERVER["SERVER_NAME"].":" . $_SERVER["SERVER_PORT"] . $_SERVER['PHP_SELF'];
  } 
  else 
  {
    $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER['PHP_SELF'];
  }
  return $pageURL;
}
?>

另外,$_SERVER['REQUEST_URI'] 和 $_SERVER['REQUEST_URL'] 是有稍微区别的:
$_SERVER["REQUEST_URI"] 返回完整的路径,包含参数 ( /directory/file.ext?query=string )
$_SERVER['REQUEST_URL'] 只返回文件路径,不包括参数,( /directory/file.ext ),和 $_SERVER['PHP_SELF'] 差不多,只不过在有些服务器上$_SERVER['REQUEST_URL']不可用!

注意:URL使用rewrite规则的时候,$_SERVER['PHP_SELF'] 和 $_SERVER["REQUEST_URL"] 可能不会返回你想要的东西

最后提醒一点,$_SERVER["REQUEST_URI"] 只有 apache 才支持,想要获取$_SERVER['REQUEST_URI'] 值,可以使用以下方案:

<?php
// 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
function request_uri()
{
  if (isset($_SERVER['REQUEST_URI']))
  {
    $uri = $_SERVER['REQUEST_URI']; 
  }
  else
  {
    if (isset($_SERVER['argv']))
    {
      $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
    }
    else
    {
      $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
    }
  }
  return $uri;
}
?>

再为大家分享两种解决方法:

第一种方法:

<?php
/**
 * 获取当前页面完整URL地址
 */
function get_url() {
  $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
  $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
  $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
  $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
  return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
 
echo get_url();
?>

第二种方法:

javascript实现

top.location.href  顶级窗口的地址
this.location.href 当前窗口的地址

PHP实现

#测试网址:   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

 

Simulink机电仿真避坑指南:如何用MATLAB解决液压系统建模的3大典型问题 本文针对液压系统建模在Simulink动态仿真中常见的三大难题——参数物理意义缺失、模型收敛性差及性能优化瓶颈,提供了专业的MATLAB解决方案。文章详细阐述了如何从物理参数推导仿真模型、破解代数环与刚性系统问题,并分享了模型降阶与加速技巧,旨在帮助工程师构建精确高效的机电系统仿真模型。 阅读详情

相关推荐

利用易特天下 ipbox&零层壹号 sdwan 组网盒子实现异地组网

一款支持zerotier的异地组网盒子

v808v808的博客 3350

PHP获取当前页面URL

重点内容 以下函数可以获取当前页面的URL,不管是http还是https。代码如下:function curPageURL() { $pageURL = 'http'; if (!empty($_SERVER['HTTPS'])) {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_POR

聂群技术博客 315

告别网络卡顿!保姆级教程:用国内镜像源5分钟搞定ESP32开发环境(Arduino IDE)

本文提供了一份保姆级教程,教你如何利用国内镜像源在5分钟内快速搭建ESP32开发环境(Arduino IDE),告别网络卡顿问题。教程详细介绍了镜像源配置、开发板安装、测试程序烧录等步骤,并包含与巴法云对接的实战案例,帮助开发者高效完成物联网项目。

weixin_42536058的博客 589

PHP取当前网页完整url地址的方法

php获取当前页面完整的url地址的方法,1.PHP取当前网页完整url地址的方法 2.php 获取当前页面的url地址不包括参数的方法教程 3.php中其它关于获取url地址的操作方法

专注企业级视频应用,企业视频直播、MR虚拟直播、教育培训连麦直播 5167

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应 一般情况下,我们都是在 dialog 里面 放一个 list 控件,然后 用自己的类绑定自己的自绘对象,如同下面: 1.  在 dialog 里面 加一个 list 列表 2. 然后 绑定这个列表 哈哈...

mfreesky的专栏 2171

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3024

php获取当前页完整url地址的方法教程

上午在做一个需求时,需要利用 php 在后端获取页面的完整地址,以前不少做这样的需求所以记录了一些常用到的函数,就发表一下。有需要的拿去吧!

不定时分享最优质的网络技术与教程,满满的干货。 7200

Python面试题及详细答案150道(126-135) -- 数据库交互篇

本文介绍了Python中操作MySQL、SQLite数据库及ORM框架的核心技术。主要内容包括:1. 使用pymysql连接MySQL数据库,演示了连接配置、SQL执行和事务管理;2. ORM原理及主流框架SQLAlchemy和Django ORM的示例;3. 通过sqlite3模块操作轻量级SQLite数据库;4. 数据库事务的ACID特性解析。这些内容涵盖了Python数据库开发的关键知识点,适合准备前后端面试的开发者复习核心概念和实际应用。

大剑师兰特的GIS世界 1729

PHP常用函数之——PHP获取当前页面的URL

PHP获取当前页面的URL <?php function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $php_self = $_SERVER['PHP_SELF...

燕鹏 1128

【C++】构造函数之初始化列表(Initialization list of constructors)

本讲主要是构造函数的初始化列表的讲节,但是本节很重要,可以关乎后面写项目

m0_62599305的博客 2234

【Windows Server 2019】企业虚拟专用网络服务的配置和管理(上)

博文介绍了部署企业虚拟专用网的定义,目的,以及好处。同时说明了实验拓扑图以及虚拟专用网络的工作原理。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

php获取url地址的方法,PHP获取当前页面完整url地址的方法

php获取当前页面完整真实的url地址的方法,包括带参数的,总结了三种方法,大家可以根据需要选择,具体函数代码如下:第一种方法:function GetCurUrl(){if(isset($_SERVER['REQUEST_URI'])){$url=$_SERVER['REQUEST_URI'];}else{if(isset($_SERVER['argv'])){$url=$_SERVER['PH...

weixin_36025345的博客 2569

华为OD机试真题 新系统 - 8位LED控制器 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 1977

php获取url完整参数,PHP获取当前页面完整url地址,包括参数的函数

//php获取当前访问的完整url地址function get_current_url(){$current_url='http://';if(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on'){$current_url='https://';}if($_SERVER['SERVER_PORT']!='80'){$current_u...

weixin_36308612的博客 557

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php 获取当前页面完整链接,php获取当前页面完整URL地址

php获取当前页面完整URL地址用得最多的地方就是文章的分享链接部分,比如我这篇文章链接:上php源码:/*** 获取当前页面完整URL地址*/function get_url() {$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'h...

weixin_35599933的博客 481

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

php获取下载地址,php获取当前页面完整URL地址函数

php获取当前页面完整URL地址函数,希望对你们有所帮助,代码如下:/*** 获取当前页面完整URL地址*/function get_url() {$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';$php_self ...

weixin_39677104的博客 266

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

PHP中$_SERVER获取当前页面的完整URL地址

PHP中$_SERVER获取当前页面的完整URL地址,其实很简单,主要是通过$_SERVER超全局变量来实现的。 具体PHP中$_SERVER获取当前页面的完整URL地址如下。 #测试网址: http://www.zizaiyou.cn /blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']." "; #localhost //获取网页地址 echo $_SERVER['PHP_SELF']." "; #/blog/testurl....

sunsineq的专栏 1164

PHP获取当前页面完整URL地址函数

<?php /** * 获取当前页面完整URL地址 */ function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $php_self = $_SERVER['PHP_SELF'

qq605053977的博客 351

php获取当前页面完整URL地址

<?php /** * 获取当前页面完整URL地址 */ function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $php_self = $_SERVER['PHP_SELF']

Young 667

php获取url完整参数,PHP获取当前页面完整url地址函数,包括参数

php获取当前页面完整真实的url地址的方法,包括带参数的,总结了三种方法,大家可以根据需要选择,具体函数代码如下:第一种方法:function GetCurUrl(){if(isset($_SERVER['REQUEST_URI'])){$url=$_SERVER['REQUEST_URI'];}else{if(isset($_SERVER['argv'])){$url=$_SERVER['PH...

weixin_34513436的博客 1201

php里面如何获取当前页面地址,如何用PHP获取当前页面完整URL地址

PHP获取当前页面完整URL地址使用PHP编写程序的时候,我们常常想要获取当前页面的URL。下面提供一个用于获取当前页面URL的函数以及使用方法:实例一:function get_full_url(){$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_P...

weixin_36469682的博客 554

php获取当前页面完整url地址封装函数

php获取当前页面完整url地址封装函数 网上写的php获取当前页面url地址方法,都很片面,或者不完善,很多没有考虑安全问题,因此,我写了这个安全完整版的,php获取当前路径封装函数。 php获取当前路径(这是网上的) 1.在当前网页echo出变量$_SERVER[‘HTTP_HOST’]即可获取域名或主机地址; 2.在当前网页echo出变量$_SERVER[‘PHP_SELF’]即可获取网页地址; 3.在当前网页echo出变量$_SERVER[“QUERY_STRING”]即可获取网址参数; 4.在当

weixin_38592569的博客 327

php获取当前页面链接_php怎么获取当前完整url地址

对于PHP学习者来说,应该都知道$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。显然PHP获取当前页面的完整url地址,主要就用到$_SERVER这个系统变量。下面我们就通过具体的示例给大家介绍PHP获取完整url的实现方法。首先我们直接打印一下$_SERVER,代码示例如下:...

weixin_36090220的博客 5482
上一篇: PHP 记录访客的浏览信息方法
下一篇: PHP钩子示例
withoutfear
博客等级 码龄13年 541粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值