php重定向网页
时间:2021-07-01 10:21:17
帮助过:21人阅读
利用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
4 | header( "Location: http://www.w3school.com.cn/" ); |
例子2
使用可选的 file 和 line 参数:
02 | // 传递 $file 和 $line,供日后使用 |
04 | if (!headers_sent( $file ,
$line )) { |
05 | header( "Location: http://www.w3school.com.cn/" ); |
07 | // Trigger an error here |
09 | echo "Headers sent in $file on line $line" ; |
根据上面的知识点,我们可以整理出自己的PHP跳转函数:
03 | * @param string $url 跳转地址 |
04 | * @param int $time 跳转延时(单位:秒) |
05 | * @param string $msg 提示语 |
07 | function redirect( $url ,
$time = 0, $msg = '' ) { |
08 | $url = str_replace ( array ( "\n" ,
"\r" ), '' ,
$url ); // 多行URL地址支持 |
10 | $msg = "系统将在 {$time}秒 之后自动跳转到 {$url} !" ; |
20 | header( "Location: " . $url ); |
22 | header( "Content-type: text/html; charset=utf-8" ); |
23 | header( "refresh:{$time};url={$url}" ); |
以上就介绍了php重定向网页,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。