保持session_destroy()之后,会话变量

问题描述:

从我logout.php:保持session_destroy()之后,会话变量

<?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()语句创建一个新的会话

+0

只能清除会话变量。 $ _SESSION = array() – dqhendricks 2011-01-08 06:58:36

+0

以何种方式添加另一个`session_start`没有任何影响?你如何测试你的预期?你期望什么行为? – Gumbo 2011-01-08 07:19:47

+0

我检查了是否创建了新的会话cookie。不是。 – 2011-01-08 07:22:17

请参阅此链接:

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

它是在PHP中的错误,它有一个补丁。

你可以把会话变量成为一个正常的变量,然后摧毁会话并在创建新会话后将其放回到会话中。

如果你想要保存一个变量,并且绝对想要销毁会话: 将该变量保存到本地变量,销毁会话,启动会话,然后重新加载会话变量...

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