2011-01-08 91 views
1

從我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

回答

1

你可以把會話變量成爲一個正常的變量,然後摧毀會話並在創建新會話後將其放回到會話中。

1

如果你想要保存一個變量,並且絕對想要銷燬會話: 將該變量保存到本地變量,銷燬會話,啓動會話,然後重新加載會話變量...

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