博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]PHP获取当前页面的URL
阅读量:6432 次
发布时间:2019-06-23

本文共 2789 字,大约阅读时间需要 9 分钟。

转载自: 

     使用PHP编写程序的时候,我们常常想要获取当前页面的URL。下面提供一个用于获取当前页面URL的函数以及使用方法:

示例一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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
;
}
?>

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

1
2
3
<?php
  
echo curPageURL
(
)
;
?>

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

示例二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
// 说明:获取无参数URL
function curPageURL
(
) 
{
    
$pageURL 
= 
'http'
;
    
if 
(
$_SERVER
[
"HTTPS"
] 
== 
"on"
) 
    
{
        
$pageURL 
.= 
"s"
;
    
}
    
$pageURL 
.= 
"://"
;
    
$this_page 
= 
$_SERVER
[
"REQUEST_URI"
]
;
    
    
// 只取 ? 前面的内容
    
if 
(
(
$this_page
, 
"?"
) 
!== 
false
) 
        
$this_page 
= 
(
(
"?"
, 
$this_page
)
)
;
    
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中的参数),

示例三:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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'] 值的通用解决方案,可以使用以下方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
// 来源:drupal-5.1 bootstrap.inc
// 整理:http://www.codebit.cn/pub/html/php_mysql/tip/other/request_uri
function request_uri
(
)
{
    
if 
(
(
$_SERVER
[
'REQUEST_URI'
]
)
)
    
{
        
$uri 
= 
$_SERVER
[
'REQUEST_URI'
]
; 
    
}
    
else
    
{
        
if 
(
(
$_SERVER
[
'argv'
]
)
)
        
{
            
$uri 
= 
$_SERVER
[
'PHP_SELF'
] 
.
'?'
. 
$_SERVER
[
'argv'
]
[
0
]
;
        
}
        
else
        
{
            
$uri 
= 
$_SERVER
[
'PHP_SELF'
] 
.
'?'
. 
$_SERVER
[
'QUERY_STRING'
]
;
        
}
    
}
    
return 
$uri
;
}
?>

参考资料:

你可能感兴趣的文章
Vuex
查看>>
iOS深拷贝浅拷贝
查看>>
spring coud feign
查看>>
NPOI List数据源 导出excel
查看>>
07抽象类特点
查看>>
什么事数据对象以及属性分为什么类型?
查看>>
图论精炼500题
查看>>
递归,动态规划,找最短路径,Help Jimmy
查看>>
poj 1006 生理周期
查看>>
Leetcode题目:House Robber III
查看>>
生物技术制药课程学生论文调研报告集
查看>>
LNK1104 无法打开文件 exe
查看>>
二叉树中和为某一值的路径
查看>>
【ZZ】一张图清晰追溯数据库的发展历程(1962-2016年)
查看>>
LeetCode 125. Valid Palindrome
查看>>
转:Awesome Image/Video segmentation
查看>>
深入浅出Mybatis系列(九)---强大的动态SQL(转载)
查看>>
滚动加载图片(懒加载)实现原理
查看>>
第一个spring,第五天。
查看>>
(八)jQuery中的事件
查看>>