在PHP中重新打开一个会话

前端之家收集整理的这篇文章主要介绍了在PHP中重新打开一个会话前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 PHP中重新打开会话,而不会收到头已发送警告?

在设置了我喜欢设置的所有会话变量后,我关闭session_write_close()的会话.我这样做,因为只要会话打开,同一个客户端可能只有一个活动连接.但我喜欢有多个并行的.

但是,如果我稍后再设置一个会话变量,我需要再次打开与会话session_start().这是有效的,但是由于我已经向客户端发送了代码,所以打印出“已发送的信头”警告.为什么要再次设置cookie? Cookie已经设置好了.只有我需要的是再次访问服务器上的会话文件.

嗯,我可以压制他们.但是是否有一种重新打开会话的方法,该会话已被session_write_close关闭,而不重新发送Cookie头? Cookie头已由第一个session_start()正确发送.所以第二个只需要让我回访到存储在Web服务器上的会话文件.

<?PHP
session_start();
// setting all the session vars I like to set
session_write_close(); // <-- // To allow parallel requests by the same user,while this script is still running

// Code that takes some time to execute
// It also prints output,so no more cookie headers after this point

@session_start(); // <-- works,but I like to use it without suppressing warnings
$_SESSION['key'] = 'new value I like to store';
session_write_close();
?>
session_start();
...
session_write_close();
...

ini_set('session.use_only_cookies',false);
ini_set('session.use_cookies',false);
ini_set('session.use_trans_sid',false);
ini_set('session.cache_limiter',null);
session_start(); // second session_start

这将阻止PHP第二次调用PHP_session_send_cookie().
See it working.

虽然重组脚本似乎仍然是更好的选择…

猜你在找的PHP相关文章