Prüfen ob Session gelöscht wurde!

Ich loesche meine Session mit:
PHP:
session_unset();
session_destroy();

Wenn vorher was in $_SESSION["id"] drin stand, sollte da jetzt nichts mehr drin stehen. Oder besser gesagt, $_SESSION["id"] sollte es dann nicht geben.
 
Ja, dass ist mir schon klar, dass ich die Sessions so löschen muss!

Wie kann ich jedoch Prüfen, mit einer IF-Funktion oder so, ob die Session gelöscht wurde. Ich brauche das, um dann auf eine andere Seite weiterzuleiten und ein Echo auzugeben, dass erfolgreich ausgeloggt wurde.

Ich kann leider nicht mit HEADER(); weiterleiten. Irgendwie kommt da immer eine Fehlermeldung! (auch nach Suche in Tutorials, blieb das Problem bestehend, darum probiere ich es jetzt anders)!

Danke
 
Pinky hat gesagt.:
Wie kann ich jedoch Prüfen, mit einer IF-Funktion oder so, ob die Session gelöscht wurde. Ich brauche das, um dann auf eine andere Seite weiterzuleiten und ein Echo auzugeben, dass erfolgreich ausgeloggt wurde.
Hab ich doch grad geschrieben.
reptiler hat gesagt.:
Wenn vorher was in $_SESSION["id"] drin stand, sollte da jetzt nichts mehr drin stehen. Oder besser gesagt, $_SESSION["id"] sollte es dann nicht geben.

Und das mit header() funktioniert wohl nicht wegen dem Output Buffering, setz man am Anfang und am Ende des Logout-Scripts folgendes:
PHP:
ob_start();
... //Dein Code
ob_end_flush();
 
reptiler hat gesagt.:
Und das mit header() funktioniert wohl nicht wegen dem Output Buffering, setz man am Anfang und am Ende des Logout-Scripts folgendes:
PHP:
ob_start();
... //Dein Code
ob_end_flush();

Habe ich gemacht! Leider erscheint mir folgende Fehlermeldung!

Warning: Cannot modify header information - headers already sent by (output started at /home/virtual/site80/fst/var/www/html/phpnew/index.php:6) in /home/virtual/site80/fst/var/www/html/phpnew/admin/logout.php on line 13


Hier noch mien Code vom Logoutfile:
PHP:
ob_start();
session_start();
session_unset();

$_SESSION = array();

session_destroy();
header("Location: index.php?path=admin&file=admin/login_1");
ob_end_flush();

Sollte ich evt. den header über session_start(); setzen?

Danke
 
PHP:
$_SESSION = array();
Die Zeile brauchst Du meiner Meinung nach nicht.

Wird das Logout-Script eigenstaendig aufgerufen oder included? Falls es included wird musst Du das ob_start() und ob_end_flush() in die includenden Datei packen.
Sieht ganz nach include aus wenn ich mir Deine Infos so ansehe.

Hab vorhin mal was getestet, nach session_unset() und session_destroy() bringt folgender Code:
PHP:
if ($_SESSION)
 {
  printf("ja");
 }
else
 {
  printf("nein");
 }
ein entschlossenes Nein. Das heisst, dass das Array $_SESSION vollkommen leer ist oder nichtmal mehr existiert.

Die Position von header() in Deinem Script ist richtig.
 
Hallo Reptiler,

die PHP-Datei 'logout.php' wird per Link aufgerufen, d.h. man klickt auf 'Abmelden' und dieser Klick öffnet dan die 'logout.php'-Datei. Also in dem Sinne nicht 'includet'.

Nun habe ich die Bestätigung, dass die Session gelöscht wird, bekomme die Fehlermeldung aber immer noch!

Ich schrib die Datei 'logout.php' so um:

PHP:
ob_start();

session_start();
session_unset();
session_destroy();

if ($_SESSION)
{ printf("Session konnte nicht gelöscht werden!"); }

else {
echo "Session wurde gelöscht!";
header("Location: index.php?path=admin&file=admin/login_1"); }

ob_end_flush();

Hätte jemand eine bessere Idee, wie ich die Sessions löschen könnte und auf eine Seite weiterleiten kann? Nehme jede funktionierende Lösung gerne entgegen.

Danke
 
Also bei mir funktioniert das auch so.
Meine logout.php:
PHP:
<?
session_unset();
session_destroy();
header("Location: index.php");
?>

session_start(), ob_start() und ob_end_flush() stehen bei mir in der index.php. Und index.php included logout.php

Hab grad mal Deine Variante getestet und hab auch damit keine Probleme.
 
Zuletzt bearbeitet:
Hallo Reptiler,

jetzt hats geklappt! Es lag an dem ob_start(); & ob_end_flush();! Die gehören in die index.php!

Vielen Dank
Schöne Woche
 
Zurück