我得到了这个警告:
警告:session_regenerate_id()[function.session-regenerate-id]:无法重新生成会话ID -标头已发送
但在此之前,我调用ob_start
。
测试脚本:
ob_start();
$session = new SessionClass();
echo "Test";
SessionClass:
function __destruct() {
session_regenerate_id(true);
session_write_close();
}
为什么我会看到这个错误?
1条答案
按热度按时间fruv7luv1#
参见
__destruct()
的PHP文档:http://php.net/manual/en/language.oop5.decon.php在脚本关闭期间调用的析构函数已经发送了HTTP标头。
session_regenerate_id()
尝试发送一个带有session id的cookie,但是因为你是在析构函数中调用它的,所以头文件已经发送了--因此出现了错误消息。为什么需要重新生成会话ID?您的代码建议您首先启动一个会话,生成一个id,发送一些数据,然后在关闭它之前重新生成会话id。除非你有特别的理由,否则你根本不需要这样做。