2011-01-08 2 views
1

von meinem logout.php:Erhaltung eine Session-Variablen nach 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"); 
?> 

Ich mag die aktuelle Sitzung beenden und dann eine neue Sitzung starten, mit einem der Variablen aus der alten Sitzung im neuen Session. Ich habe versucht, eine zweite session_start-Anweisung hinzuzufügen, aber das hatte keine Wirkung. Was kann ich sonst noch tun ?

Dank

Edit: habe ich beschlossen, auf eine neue Seite umgeleitet, auf dem eine frische session_start() Anweisung, um eine neue Sitzung erstellt

+0

könnte nur die Session-Variablen stattdessen löschen. $ _SESSION = array() – dqhendricks

+0

In welcher Weise hatte das Hinzufügen eines anderen 'session_start' keinen Effekt? Wie hast du getestet, was du erwartet hast? Und welches Verhalten hast du erwartet? – Gumbo

+0

Ich habe überprüft, ob ein neuer Sitzungscookie erstellt wurde. Es war nicht. –

Antwort

1

Sie die Session-Variablen in eine normale Variable setzen könnten, und dann zerstören die Sitzung und legen Sie sie in die Sitzung zurück, nachdem Sie eine neue erstellt haben.

+0

tolle Köpfe denken gleich :) – CarpeNoctumDC

+1

Dies ist, was ich ausprobiert habe, aber die second_session() Start-Anweisung scheint nicht zu einer neuen Sitzung zu starten. –

1

Wenn Sie nur eine Variable haben, die Sie speichern möchten, und Sie die Sitzung absolut zerstören möchten: Speichern Sie die Variable in eine lokale Variable, zerstören Sie die Sitzung, starten Sie eine Sitzung, und laden Sie dann diese Sitzung Variable ...

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