Sitzung verschwindet nach Seitenaktualisierung

8

Dies ist das erste Mal, dass ich Sessions mit PHP verwende. Ich möchte einige Informationen von StackOverflow und anderen Websites erhalten, um mein erstes PHP-Login zu erstellen, aber ich bekomme ein Problem und weiß nicht, wie ich es lösen kann.

Grundsätzlich, in dem Moment, in dem ich eine Sitzung nach der Seitenaktualisierung einstelle, verschwindet diese Sitzung. Soll nicht für eine gewisse Zeit bleiben? (Das kann mit set_cookie_params etc eingestellt werden, aber das ist ein anderes Thema)

Ich habe am Anfang meiner Seite (global) diesen Code:

%Vor%

dann in meiner login.php -Datei, wenn der Benutzer die richtigen Infos einfügen:

%Vor%

Das Problem, dass nach dem Redirect die uid-Sitzung verschwindet: Ich setze am Ende der index.php Seite ein var_dump der $_SESSION Variable, und ich sehe nur die IP und User-Agent, der jedes Mal in der Bedingung else gesetzt wird.

BEARBEITEN : Ich habe versucht, den gesamten Inhalt der Sitzungsinitialisierung durch nur session_start(); zu ersetzen, und es funktioniert, ich verstehe nicht, warum diese sichere Sitzungsinitialisierung nicht funktioniert und das macht Sitzung verschwinden.

    
Keaire 30.01.2018, 09:54
quelle

6 Antworten

8

Rufen Sie Ihre Seite über https:// an, wenn Sie dies testen ...?

Ansonsten ist die Erklärung einfach:

%Vor%

Damit setzt PHP das Sitzungscookie mit dem secure -Flag, dh der Browser darf dieses Cookie nur mit Anfragen über eine sichere Verbindung zurücksenden.

Wenn Sie dies also nur über HTTP testen, wird der Sitzungscookie nicht mit der nächsten Anfrage zurückgeschickt. Daher findet PHP keine Sitzungs-ID und startet daher eine neue Sitzung, wenn Sie session_start aufrufen. ..

    
CBroe 09.02.2018, 12:21
quelle
0

das RANDOMID kann sich ändern, wenn Sie Ihre Seite aktualisieren / ändern, je nachdem, wie Sie sie generieren!
Vergewissern Sie sich daher, dass Sie auf allen Ihren Seiten den gleichen 'sitzungsnamen' verwenden, bevor Sie die Sitzung starten.

Anmeldeseite

%Vor%

Indexseite

%Vor%     
zakaria35 09.02.2018 16:07
quelle
0

Bitte versuchen Sie das folgende, leicht veränderte Snippet unten, um Ihren global Code am Anfang jeder Seite zu ersetzen.

%Vor%     
Peter Darmis 12.02.2018 19:40
quelle
0

Versuchen Sie, session.save_path

zu überprüfen
  1. finde session.save_path von phpinfo ()
  2. Überprüfen Sie, ob es existiert oder nicht. Wenn nicht, machen Sie es mit mkdir .
  3. überprüfe die Erlaubnis. ändern Sie es in andere können lesen / schreiben ( chmod 707 )

Wenn ich eine neue PHP-Erweiterung (SOAPClient) über yum auf meinem Dev-Server installiert habe (AWS EC2 Linux AMI), verschwindet die erfahrene Sitzung, wenn die Aktualisierung oder die Seite sich wie Sie bewegt.

Der Grund war, dass die Berechtigung meines Sitzungsverzeichnisses auf 500 geändert wurde, obwohl ich nichts getan habe. so konnte php die sitzungsdatei nicht auf die disk schreiben.

hoffe das kann dir helfen:)

    
Meow Kim 14.02.2018 07:12
quelle
0

Dies geschieht, weil session_start() die erste Zeile Ihres Codes sein muss.

Sie können dies in einem alten Fenster sehen Antwort von mir auch.

Viel Glück.

    
user7941334 14.02.2018 23:18
quelle
0

Verwenden Sie session_start () oben auf jeder Seite. Sie müssen auf die Sitzungsdaten auf der Seite zugreifen.

    
Harsh Wardhan Gaur 15.02.2018 12:24
quelle

Tags und Links