header("Location:*****.php") 的使用

header("Location:*****.php")应该注意的几个问题 :

header("Location:")作为php的转向语句。其实在使用中,他有几点需要注意的地方。

1、要求header前没有任何输出

但是很多时候在header前我们已经输出了好多东 西了,此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,ob的意思是在服务器端先存储有关输出,等待适当的时机再输出,而 不是像现在这样运行一句,输出一句,发现header语句就只能报错了。

具体的语句有: ob_start(); ob_end_clean();ob_flush();.........

2、在header("Location:")后要及时exit

否则他是会继续执行的,虽然在浏览器端你看不到相应的数据出现,但是如果你进行抓包分析的话,你就会看到下面的语句也是在执行的。而且被输送到了浏览器客户端,只不过是没有被浏览器执行为html而已(浏览器执行了header进行了转向操作)。

所以,标准的使用方法是

ob_start();

........

if ( something ){

ob_end_clean();

header("Location: yourlocation");

exit;

else{

..........

ob_flush(); //可省略

要想在header前有输出的话,可以修改php.ini文件

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  htmlspecialchars($out) ;
或者等到将来, 再或者把这个字符串送到模板(Template)里再输出.

时间: 2024-10-17 08:52:19

header("Location:*****.php") 的使用的相关文章

header(&quot;location:&quot;)总结

header("Location:login.php")应该注意的几个问题 header("Location:")作为php的转向语句.其实在使用中,他有几点需要注意的地方. 1.要求header前没有任何输出 2.在header("Location:")后要及时exit

关于header(&#39;location:url&#39;)的一些说明,php缓冲区

关于header('location:url')的一些说明,php缓冲区 网上搜索header('location:url')的用法,得到如下三个结论: 1. location和":"号间不能有空格,否则会出错. 2. 在用header前不能有任何的输出. 3. header后的PHP代码还会被执行.(可使用exit('...')中断执行). 经试验,第一条和第三条没有问题.第三条验证方法可用 file_put_contents()函数. 关键是第二条,php官方说明里也有提到这条,但

PHP使用header+Location实现网站301重定向

转自:http://www.feiyuseo.com/seo-jishu/145.html 对于我们SEO人员来说,有的时候需要对网站进行重定向.一般来说,对网站重定向的http返回状态码是301和302两种.下面兰州SEO就通过实例来为你介绍一下怎样通过PHP使用header+Location实现网站301重定向. 关于PHP网站的定向问题,在百度上面搜索的一中午,发现使用最多的就是使用“header+Location”的重定向方法.下面我给出最流行的代码: <?php header("

header(&quot;Location:login.php&quot;)

header("Location:login.php")应该注意的几个问题 header("Location:")作为php的转向语句.其实在使用中,他有几点需要注意的地方. 1.要求header前没有任何输出 但是很多时候在header前我们已经输出了好多东西了,此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,ob的意思是在服务器端先存储有关输出,等待适当的时机再输出,而不是像现在这样运行一句,输出一句,发现header语句就只能报错了

Header() in PHP &amp;html – Refresh (Redirect) to Location (URL) in X seconds

Case 1 : Redirect a page to a URL without waiting in PHP. 1 header("Location: index.php"); Case 2 : Redirect a page to an URL after waiting for X seconds in PHP. 1 2 3 4 5 <?php header("Refresh: 5; url=index.php"); echo 'Logged in s

微信openid的单脚本获取 将 header 至自身,但是reques参数不同,响应也不同-----“单脚本APP”

w 0-目的是封装成一个类.方法,方便在不同入口下,比如不是在微信公众号内而是在他人分享的url,获取opeid,且便于路由控制,将路由控制交给且仅交给codeigniter; 1-任何一个网站都可以整合到一个单一的脚本中(暂设为以php css js 构成的的),任何一个database都可以放入一张表table中(暂设mysql):任何一个网站也可以通过单一页面完成所有功能. www.w.com/wb <?php $wxwid = 'appid'; $wstate = intval($_RE

header()函数

header()前不能有任何代码,即使有,也得用一个函数或关键字,让它不执行,否则header()函数无法执行 这个函数说白了是个跳转函数 跳转到指定页面(站内的或指定网址) 例: header('Location:http://www.baidu.com/'); 有几个小问题 1.Location   第一个字母大写 2.网址前必须加"http://",后面必须加"/" 3.Location:http://www.baidu.com/  前后必须加单引号 4.最后

PHP 使用header函数设置HTTP头的示例解析 表头

//定义编码  header( 'Content-Type:text/html;charset=utf-8 '); //Atom  header('Content-type: application/atom+xml'); //CSS  header('Content-type: text/css'); //Javascript  header('Content-type: text/javascript'); //JPEG Image  header('Content-type: image/

php header setcookie headers_sent函数 函数检查 HTTP 标头是否已被发送以及在哪里被发送

这里需要注意的 header() 最常被拿來送 header('Location: /'); 等等, 做网页重定向的动作. 在使用 setcookie(), header()... 等函数前 不可以用任何的输出.若必须怎需要用log记录. 如果有输出 则headers_sent将会返回 true. 我在使用TP  直接用 php 命令运行时( php index.php /Home/Login/test) 发现没有返回输出,查看发现, 里面有$this->redirect("")