2 Stimmen

PHP session_id() akzeptiert keine bestehende Sitzungsnummer

Ich habe Probleme, den Neustart von Sitzungen in PHP zu erzwingen. Hier ist das Problem:

Ich kann meine Sitzungsnummer mit session_id() kopieren und ganz oben in mein Skript einfügen:

session_id('the_session_id');
session_start();

Und wenn ich einen neuen Browser öffne, wird die Sitzung aus dem anderen Browser nicht übernommen. Welche Einstellungen kann ich überprüfen?

0voto

shamittomar Punkte 44872

Der Grund:

Wenn Sie das Browser-Fenster schließen und es erneut öffnen, wird in diesem Moment eine zweite Sitzung mit einer anderen ID gestartet; wenn die verwendete Webanwendung ein sitzungsbasiertes Authentifizierungssystem hat, muss sich der Benutzer erneut anmelden. Gleichzeitig muss sich der Benutzer auch zweimal abmelden!

Lösung:

Diese Funktion verwendet ein echtes Cookie für die Sitzungs-ID und aktualisiert die Ablaufzeit bei jeder Skriptausführung. Die Ablaufzeit ist gleich der PHP-Direktive "gc_maxlifetime" (Standard) oder jedem benutzerdefinierten Wert. Fügen Sie diese Funktion also in Ihre PHP-Datei ein. Wir werden sie brauchen.

<?php 

// $expire = the time in seconds until a session have to expire 
function start_session($expire = 0)
{ 
    if ($expire == 0)
        $expire = ini_get("session.gc_maxlifetime"); 
    else
        ini_set("session.gc_maxlifetime", $expire); 

    if (empty($_COOKIE['PHPSESSID']))
    { 
        session_set_cookie_params($expire); 
        session_start(); 
    }
    else
    { 
        session_start(); 
        setcookie("PHPSESSID", session_id(), time() + $expire); 
    } 
} 

?>

Oben auf Ihrer Seite, wo Sie session_id('the_session_id'); y session_start(); entfernen Sie diese Zeilen und starten Sie die Sitzung mit dem unten stehenden Code:

So starten Sie eine Sitzung mit einer in der php-Konfiguration festgelegten Ablaufzeit

start_session();

Um eine Sitzung zu starten, die in 1 Stunde abläuft:

start_session(3600);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X