PHP - Session zerstören nach dem Schließen des Browsers

8

Obwohl diese Frage mehrere Duplikate hat, konnte ich keine passende Lösung für mich finden. Brauchen Sie etwas Hilfe.

Ich habe ini_set('session.cookie_lifetime', 0); in meiner Konfigurationsdatei verwendet.

Aber es hilft mir nicht, die Sitzung im Browser zu schließen.

Aktueller Fluss der Anwendung:

1) Wenn der Benutzer auf der Authentifizierungsseite gültig ist, generieren Sie mithilfe von session_regenerate_id(true);

einen neuen Sitzungsbezeichner

2) Die Steuerung geht zu welcome.php, wo ich mit session_start();

eine neue Sitzung starte

3) im Abmeldungsseitencode ist

%Vor%     
Shri 25.06.2014, 06:53
quelle

8 Antworten

6

Der beste Weg ist, die Sitzung zu schließen ist: wenn nach bestimmten Zeitintervallen keine Antwort für diese Sitzung vorhanden ist. dann schließen. Bitte sehen Sie diesen Beitrag und ich hoffe, es wird das Problem lösen. " Wie kann das Session-Timeout in PHP geändert werden? > "

    
Ankit 25.06.2014, 07:32
quelle
7

Verwende einen Keep Alive.

Bei der Anmeldung:

%Vor%

Ein Ajax-Aufruf alle paar (zB 20) Sekunden:

%Vor%

Server Seite keepalive.php:

%Vor%

Bei jeder anderen Aktion:

%Vor%     
colburton 25.06.2014 07:37
quelle
4

Es gibt verschiedene Möglichkeiten, dies zu tun, aber der Server kann nicht erkennen, wenn der Browser geschlossen wird, also ist es schwer, ihn zu zerstören.

  • Timeout-Sitzung.

Erstellen Sie entweder eine neue Sitzung mit der aktuellen Uhrzeit oder fügen Sie der aktuellen Sitzung eine Zeitvariable hinzu. und überprüfen Sie es dann beim Start oder führen Sie eine Aktion aus, um zu sehen, ob die Sitzung entfernt werden muss.

%Vor%
  • Ajax

Lassen Sie Javascript einen Ajax-Aufruf ausführen, der die Sitzung löscht, mit onbeforeunload() einer JavaScript-Funktion, die eine abschließende Aktion aufruft, wenn der Benutzer die Seite verlässt. Aus irgendeinem Grund funktioniert das aber nicht immer.

  • lösche es beim Start.

Wenn der Benutzer die Anmeldeseite beim Start immer sehen soll, nachdem die Seite geschlossen wurde, können Sie die Sitzung beim Start einfach löschen.

%Vor%

und da sind wahrscheinlich noch mehr.

    
kpp 25.06.2014 07:09
quelle
2

Dies könnte Ihnen helfen,

%Vor%

Ihr Sitzungscookie wird zerstört ... so wird Ihre Sitzung gut, bis der Browser geöffnet ist. Bitte sehen Sie Ссылка dies kann Ihnen helfen.

    
Adil Abbasi 25.06.2014 07:05
quelle
1

Sie können JavaScript verwenden, indem Sie eine Ajax-Anfrage an den Server auslösen, um die Sitzung beim onbeforeunload-Ereignis zu zerstören, das ausgelöst wird, wenn wir die Browse-Registerkarte oder das Fenster oder den Browser schließen.

    
itzmukeshy7 25.06.2014 07:37
quelle
0

Verwenden Sie den folgenden Code, um die Sitzung zu zerstören:

%Vor%     
user3774008 25.06.2014 07:26
quelle
0

Es gibt einen weiteren "Hack" durch den Einsatz von HTTP Referer (wir gehen davon aus, dass das Browserfenster geschlossen wurde, der Domain-Name des aktuellen Referrers und der Domain-Name der aktuellen Seite stimmen nicht überein):

%Vor%

Das hat auch einige Nachteile, aber es hat mir ein paar Mal geholfen.

    
DTT 02.08.2016 20:26
quelle
-2

Wenn Sie verwirrt sind, was zu tun ist, lesen Sie einfach das Handbuch der Funktion session_destroy () :

Ссылка

Dort finden Sie weitere Funktionen von session_destroy ().

    
Mr.Unknown 22.05.2015 13:21
quelle

Tags und Links