您的位置:首页 > 编程语言 > PHP开发

php重定向网页

2015-08-26 04:59 661 查看
利用PHP的header()函数,可以实现页面跳转,如

1
header(
"Location: "

.
$url
);
但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header() 函数,来发送其它的标头。

这个时候只能利用前端HTML或JS技术来实现页面跳转了!

怎样知道HTTP报头块已经发送了呢?

PHP的 headers_sent() 函数,可以帮忙。

 

 

PHP headers_sent() 函数

headers_sent() 函数检查 HTTP 标头是否已被发送以及在哪里被发送。

如果报头已发送,则返回 true,否则返回 false

语法

headers_sent(file,line)

参数描述
file,line可选。

如果设置 file 和 line 参数,headers_sent() 会把输出开始的 PHP 源文件名和行号存入 file 和 line 变量中。
提示和注释

注释:一旦报头块已经发送,就不能使用 header() 函数 来发送其它的标头。使用此函数至少可以避免与 HTTP 标头有关的错误信息。
注释:可选的 file 和 line 参数是 PHP 4.3 中新加的。

例子1

1
<?php
2
// 如果报头未发送,则发送一个
3
if
(!headers_sent()) {
4
    
header(
"Location: http://www.w3school.com.cn/"[/code]
);
5
    
exit
;
6
}
7
?>
例子2

使用可选的 file 和 line 参数:

01
<?php
02
// 传递 $file 和 $line,供日后使用
03
// 不要预先为它们赋值
04
if
(!headers_sent(
$file
,
$line
)) {
05
    
header(
"Location: http://www.w3school.com.cn/"[/code]
);
06
    
exit
;
07
    
// Trigger an error here
08
}
else

{
09
    
echo

"Headers sent in $file on line $line"
;
10
    
exit
;
11
}
12
?>
 

 

 

 

根据上面的知识点,我们可以整理出自己的PHP跳转函数:

01
/**
02
 
* URL跳转
03
 
* @param string $url 跳转地址
04
 
* @param int $time 跳转延时(单位:秒)
05
 
* @param string $msg 提示语
06
 
*/
07
function
redirect(
$url
,
$time
=0,
$msg

=
''
) {
08
    
$url

=
str_replace
(
array
(
"\n"
,
"\r"
),
''
,
$url
);
// 多行URL地址支持
09
    
if

(
empty
(
$msg
)) {
10
        
$msg

=
"系统将在 {$time}秒 之后自动跳转到 {$url}!"
;
11
    
}
12
    
if

(headers_sent()) {
13
        
$str

=
"<meta http-equiv='Refresh' content='{$time};URL={$url}'>"
;
14
        
if

(
$time

!=0) {
15
            
$str

.=
$msg
;
16
        
}
17
        
exit
(
$str
);
18
    
}

else
{
19
        
if

(0 ===
$time
) {
20
            
header(
"Location: "

.
$url
);
21
        
}

else
{
22
            
header(
"Content-type: text/html; charset=utf-8"
);
23
            
header(
"refresh:{$time};url={$url}"
);
24
            
echo
(
$msg
);
25
        
}
26
        
exit
();
27
    
}
28
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 重定向