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.
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. ..
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% Bitte versuchen Sie das folgende, leicht veränderte Snippet unten, um Ihren global
Code am Anfang jeder Seite zu ersetzen.
Versuchen Sie, session.save_path
zu überprüfenWenn 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:)
Verwenden Sie session_start () oben auf jeder Seite. Sie müssen auf die Sitzungsdaten auf der Seite zugreifen.