我之前搜索过但是无法修复我的问题
我的会话参数包含在我的标题中。
这个标题包含在我的所有页面中。
除了登陆页面(用户注册或登录)之外,效果很好:我得到了臭名昭着的Cannot send session cookie - headers already sent
错误。
我是否可以在目标网页上使用disable session_start();
而无需移除整个标头?
如果没有,我应该研究哪些其他选择?
编辑:
这是我头文件顶部的会话参数:
session_start();
$lifetime=5000000;
session_set_cookie_params($lifetime);
此错误未在开发中显示。仅限于制作。
答案 0 :(得分:1)
在着陆页中使用session_start()
时不会有任何问题。您只需要确保页面顶部包含您的标题脚本,以便在调用session_start()
之前不会将任何其他内容发送到浏览器。这是因为:
注意:要使用基于cookie的会话,必须在向浏览器输出任何内容之前调用session_start()。
以上注释复制自:http://php.net/manual/en/function.session-start.php
可以这样做:检查标头是否已经发送。如果已发送标头,请拨打session_start()
。
此页面可能会帮助您朝这个方向发展:How to check if Headers already been sent in PHP
你仍然需要找到问题的原因,并且需要修复它,但是暂时的代码应该有所帮助:
if( ! headers_sent() )
{
session_start();
$lifetime=5000000;
session_set_cookie_params($lifetime);
}
答案 1 :(得分:0)
在您的页面中可能会有一些错误/警告在进一步执行之前发送到浏览器。 要继续执行,您可以在标题页或第一个登录页面中编写ob_start。