Frage

Ich habe eine PHP-Website mir beibehalten und ich habe bestätigt, dass dies an einem Punkt gearbeitet.

Wir haben eine Webseite ein Login-System verwendet, das eine in einer $_SESSION['user'] Variable in Benutzer-Informationen protokolliert speichert. Die Website verwendet, um den Benutzer abzumelden, wenn Sie auf /logout.php , die im wesentlichen entfernt, dass Teil der Sitzung, dann auf die Homepage weitergeleitet header().

Wie seit kurzem der /logout.php Datei mit session_start() an der Spitze irgendwie nicht die Sitzungsinformationen nicht sehen, wenn print_r() zur Ausgabe für Debugging-Zwecke es verwendet wird.

Wenn ich auf eine andere Seite gehen, sehe ich die Session-Informationen ganz gut, aber nicht auf der Logout-Seite ... das ist genau das, warum ich nicht die Session info entfernen kann, weil sie nicht zugänglich ist.

Ich dachte $_SESSION auf der Website global war, bis der Browser geschlossen wurde. Ich hatte noch nie das passiert und ich weiß, dass die Sitzungsinstanz auf dieser Seite gestartet wurde, so dass es seltsam ist, dass es zeigt mir nicht die Sitzungsdaten.

Irgendwelche Ideen? Ich bin total auf dieser stumped!

Code: /logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

Die Überprüfung der $_SESSION['user'] ist standortweite und ich Aufruf an verschiedenen Gegenstände darunter, wenn für verschiedene Dinge benötigt. Jemand andere Aufsteiger und ich versuche, zu debuggen, warum es nicht für sie ganz plötzlich zu arbeiten.

War es hilfreich?

Lösung

Sind Sie mit logout.php aus der gleiche genaue Domäne, dass Sie die Sitzung festgelegt beginnen (das heißt example.com gegen www.example.com/logout.php)

Wie für nur Entschärfen spezifische Sitzungsdaten, wäre es am besten session_destroy() zu rufen und dann unset Ihre Cookies, um die Sitzung zu töten.

Andere Tipps

Wenn die Domain / Sub-Domain der gleiche wie der Rest der Seite ist, würde ich sagen, das klingt wie eine typische Sitzung gegenüber der Ausgangsfehler. Stellen Sie sicher, dass Sie alle Fehler aktiviert ist, und zeigt sie, wie Sie die Ausgabe an den Client gedruckt haben könnte, bevor session_start() aufrufen. Dadurch wird die Funktion brechen und machen Sitzungen nicht verfügbar.

Um das Problem zu beheben (wenn es der Fall ist), sollten Sie alle Ausgaben vor session_start zu entfernen. Auch ein Raum vor <?php ausgegeben von Apache in Betracht gezogen werden (und andere). Auch stellen Sie sicher, haben Sie deaktiviert BOM (Byte Order Mark) in dem Dokument (jeder anständige Editor lassen Sie dies ändern, suchen Sie einfach nach so etwas wie „Aktuelle Datei setings“).

Sie immer die erste Zeile Ihres PHP-Code erinnern sollte sonst session_start(); und nichts sein. Wenn alle nur zu tun ungesetzt die Session-Variablen sind und die Sitzung zerstören, versuchen, die require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php'); entfernen und fügen Sie die session_start () und die session_destroy () am Ende der logout.php Datei und sehen, ob es funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top