只有在我的索引页面中,会话不会启动,但如果我转到另一个页面,会话就会启动,或者如果我转到其他页面,而不是回到索引页面,会话会启动。我的设置方式是使用jQueryAJAX。如果它通过了,它应该创建一个会话,而不是页面刷新,而不是会话启动,但它不会启动,这就是问题所在。
索引页面的顶部:
ob_start;
error_reporting(0);
session_set_cookie_params(3600 * 24 * 7, '/', '.example.com');
session_start();
如果我去掉error_reporting(0)
,我会得到这些错误
session_start()[function.session start]:无法发送会话cookie-标头已存在session_start()[function.session start]:无法发送会话缓存限制器
我在其他页面中没有得到这些错误
我的猜测是,您的PHP上面有内容,可以是空白、HTML,也可以是<?php
前面的空格。你不能在<?php
之上有任何东西,比如<div>
。。。,或<table>
。。。等
检查一下你是否这样做了。这就是为什么你会收到"headers already sent
"的错误消息。
将会话函数置于一切之上。此外,ob_start
是一个函数,必须调用。
在编写代码时,error_reporting()
应始终设置为-1
。当它被上传到服务器时,它应该被设置为0
。使用php.ini
文件通常更容易处理它。
session_set_cookie_params(3600 * 24 * 7, '/', '.example.com');
session_start();
error_reporting(-1);
ob_start();
// Do something
// Call whateter ob_* function you need
我建议你经常阅读文档。那里有很多帮助。请务必阅读评论。