php重定向网页
2015-08-26 04:59
661 查看
利用PHP的header()函数,可以实现页面跳转,如
但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header() 函数,来发送其它的标头。
这个时候只能利用前端HTML或JS技术来实现页面跳转了!
怎样知道HTTP报头块已经发送了呢?
PHP的 headers_sent() 函数,可以帮忙。
PHP headers_sent() 函数
headers_sent() 函数检查 HTTP 标头是否已被发送以及在哪里被发送。
如果报头已发送,则返回 true,否则返回 false。
语法
headers_sent(file,line)
提示和注释
注释:一旦报头块已经发送,就不能使用 header() 函数 来发送其它的标头。使用此函数至少可以避免与 HTTP 标头有关的错误信息。
注释:可选的 file 和 line 参数是 PHP 4.3 中新加的。
例子1
例子2
使用可选的 file 和 line 参数:
根据上面的知识点,我们可以整理出自己的PHP跳转函数:
1 | header( "Location: " . $url ); |
这个时候只能利用前端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 | ?> |
使用可选的 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
|
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 | } |
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料