php中header("Location:xxx.php")跳转问题
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-19 00:27:00 浏览: 评论:0
在php中header有很多的作用,这里我们给大家介绍在使用header作文件跳转时一些注意事项,希望此文章能给各位朋友带来快乐。
header("Location:login.php")应该注意的几个问题
header("Location:")作为php的转向语句,其实在使用中,他有几点需要注意的地方。
1、要求header前没有任何输出
但是很多时候在header前我们已经输出了好多东西了,此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,ob的意思是在服务器端先存储有关输出,等待适当的时机再输出,而不是像现在这样运行一句,输出一句,发现header语句就只能报错了。
具体的语句有:ob_start(); ob_end_clean();ob_flush();.........
2、在header("Location:")后要及时exit
所以,标准的使用方法是,如下代码:
- ob_start();
- ........
- if ( something ){
- ob_end_clean();
- header("Location: yourlocation");
- exit;
- else{
- ..........
- ob_flush(); //可省略
output_handler =mb_output_handler 或 output_handler =on
Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。
一、相关函数简介:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
ob_start() 开始输出缓冲, 这时PHP停止输出, 在这以后的输出都被转到一个内部的缓冲里.
ob_get_contents() 这个函数返回内部缓冲的内容. 这就等于把这些输出都变成了字符串.
ob_get_ length() 返回内部缓冲的长度.
ob_end_flush() 结束输出缓冲, 并输出缓冲里的内容. 在这以后的输出都是正常输出.
ob_end_clean() 结束输出缓冲, 并扔掉缓冲里的内容.
举个例子,var_dump()函数输出一个变量的结构和内容, 这在调试的时候很有用.
但如果变量的内容里有 < , > 等HTML的特殊字符, 输出到网页里就看不见了. 怎么办呢?用输出缓冲函数能很容易的解决这个问题,代码如下:
- ob_start();
- var_dump($var);
- $out = ob_get_contents();
- ob_end_clean();
这时var_dump()的输出已经存在 $out 里了,你可以现在就输出,代码如下:
echo '<pre>' . htmlspecialchars($out) . '</pre>' ;
Tags: header Location php 跳转
相关文章
- ·header 函式的使用(2013-11-27)
- ·php header中Content-disposition用法详细(2013-12-02)
- ·php Cannot modify header information-headers already sent by解决办法(2013-12-04)
- ·php header 404错误包含文件出现乱码(2013-12-04)
- ·php header中301/404跳转要注意事项详解(2014-01-11)
- ·php header 404跳转错误页面实例(2014-07-21)
- ·PHP Header下载文件在IE文件名中文乱码问题(2014-09-13)
- ·header() 301重定向实现代码(2014-09-18)
- ·php header函数输入图片IE不显示问题(2014-09-20)
- ·Fatal error: Call to undefined function get_header() in(2014-09-21)
- ·php header()函数实现文件下载的文件,提示被破坏不能打开(2014-09-21)
- ·php header请求重写的一个问题(2014-09-21)
- ·PHP利用header跳转失效解决方法(2014-09-22)
- ·直接用php的header发送404错误页面的方法实例(2015-04-09)
- ·PHP header常用URL地址跳转的几种方法(2015-04-11)
- ·PHP 页面编码声明方法详解(header或meta)(2018-09-15)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)