在session_destroy()之后保留会话变量

时间:2011-01-08 06:55:03

标签: php session

来自我的logout.php:

<?php require_once("includes/session.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php
  if ( isset( $_SESSION['colony_id']))
    $cookie = $_SESSION['colony_id'] ;
  $_SESSION = array();
  if(isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
  }
  session_destroy();
    //this fails-  session_start() ;   
    if ( !empty($cookie))
      $_SESSION['colony_id'] = $cookie ;    
    // redirect_to("login.php?logout=1");
?>

我想结束当前会话,然后使用新会话中旧会话中的一个变量启动一个新会话。我尝试添加第二个session_start语句,但这没有任何效果。我还能做什么?

由于

编辑:我决定重定向到新页面,新的session_start()语句创建了一个新会话

3 个答案:

答案 0 :(得分:2)

请看这个链接:

http://bugs.php.net/bug.php?id=38042

这是php中的一个错误,它有一个补丁。

答案 1 :(得分:1)

您可以将会话变量放入普通变量中,然后在创建新会话后销毁会话并将其放回会话中。

答案 2 :(得分:1)

如果你有一个你想保存的变量,你绝对想破坏会话: 将变量保存到局部变量,销毁会话,启动会话,然后重新加载会话变量......

$localvar = $_SESSION['variable'];
session_destroy();
session_start();
$_SESSOIN['variable'] = $localvar;