请高手解答:session_start与header的问题

fhiesc 2004-08-06 03:01:31
1、session_start(); 要放在文件最前面,保证之前没有输出。
2、header();之前也不能有输出。

我的一个页面中既有session_start(),又有header()该怎么办??
...全文
257 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lzkd 2004-08-06
哦,是我错了....
学习一下了.....
回复
-神仙- 2004-08-06
用缓冲
ob_start()
ob_flush()
回复
ashchen 2004-08-06
楼上的不对,所谓输出指的是浏览器能看到的内容,header和session_start()发送的都是http协议里面隐藏的内容。
大家可以看一下session_start()向浏览器发送的内容:
---------- PHP ----------
Content-type: text/html
X-Powered-By: PHP/4.3.8
Set-Cookie: PHPSESSID=641fdf8789e44b57229a53f587df9923; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
输出完成 (耗时 0 秒) - 正常终止
而上面这些内容完全可以用header来代替,实际上session的功能一部分就是发送header,另外一部分在服务器存贮读取数据。
所以header和session_start的位置无所谓,只要....就行
目前session_start()遇到的很多问题都是不存在默认的目录/tmp,而打开了错误信息提示,这时候错误信息是在header信息之前发送的,所以会有两个错误,这是由错误导致的错误
回复
lzkd 2004-08-06
ft....

你两个header连在一起,当然不行了,对于第二个header来讲,第一个
header就是输出了.
回复
fhiesc 2004-08-06
session_start();
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=员工信息.xls");

这样就不行
回复
mhzzz 2004-08-06
它们不管谁在前都没有输出,所以可以随便放置
回复
lzkd 2004-08-06
?应该没有问题吧

测试文件如下
ttt.php
<?php
session_start();
$_SESSION['a']='This is a test.';
header("location:ttt2.php?run=$_SESSION[a]");
?>

ttt2.php
<?php
echo $_GET['run'];
session_destroy();
?>

楼主试一下,并不矛盾呀,可以共同使用.
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2004-08-06 03:01
社区公告
暂无公告