php会话在重定向时丢失
我试图在这里使用安全会话。这是我在研究时采用的一段代码。 不幸的是,重定向头时,会话没有加载。 有人能解释一下发生了什么事并给我指出正确的方向吗 这是密码php会话在重定向时丢失,php,session,Php,Session,我试图在这里使用安全会话。这是我在研究时采用的一段代码。 不幸的是,重定向头时,会话没有加载。 有人能解释一下发生了什么事并给我指出正确的方向吗 这是密码 if(!isset($_SESSION)) { $dir_path = ini_get("session.save_path") . DIRECTORY_SEPARATOR . _SESSION_DIR; if(!is_dir($dir_path)) mkdir($dir_path);
if(!isset($_SESSION))
{
$dir_path = ini_get("session.save_path") . DIRECTORY_SEPARATOR . _SESSION_DIR;
if(!is_dir($dir_path)) mkdir($dir_path);
if( ini_get('session.use_trans_sid') == true) {
ini_set('url_rewriter.tags' , '');
ini_set('session.use_trans_sid' , false);
}
$lifetime = 60 * 60 * 24 * 1;
//$lifetime = 60;
ini_set('session.gc_maxlifetime' , $lifetime);
ini_set('session.gc_divisor' , '1');
ini_set('session.gc_probability' , '1');
ini_set('session.cookie_lifetime' , '0');
ini_set('session.save_path', $dir_path);
session_name(_SESSION_NAME);
session_start();
如果您希望检索在上一页上创建的会话,则必须确保在编写会话后使用了会话_write _close。然后,为了在后续页面上使用它们,您必须先调用session_start,然后才能使用它们。您可以在检查每页会话id的值上查看更多信息。如果更改,那么您将丢失会话cookie,并且每次都会得到一个新的/新的/空的会话。可能是由于cookie_路径设置不正确,或者客户端存在cookie设置问题。是的,当前正在使用xampp在本地计算机上工作,是的,每次都会更改会话_id。cookie是在所需路径(即xampp/tmp/cookie_名称)处创建的。在重定向会话之前,它可以正常工作。真的很想知道,知道我错过了什么感觉不对。当脚本终止时,PHP自动关闭/保存会话数据。session_write_close仅对长时间运行的脚本是必需的,您需要释放会话文件上的锁。这就是session_start的全部要点:在任何输出之前调用一次,其余的由PHP完成。只要会话cookie设置正常工作,您就不必执行任何其他操作来保留会话数据。您在脚本结束时的会话是正确的,但在会话写入关闭前发生重定向时,我读取并体验了未保存的会话。在php.net上的评论中也提到了这一点。我并不是说你错了@MarcB,但我认为在这种情况下,这会解决问题。