Logout - URL-Weiterlung

Radhad

Erfahrenes Mitglied
Hi zusammen,

ich habe meinen Login komplett überarbeitet. Ab sofort hat jeder User eine eigene SessionID die in der Datenbank hinterlegt wird. Allerdings will jetzt der Logout nicht so richtig. Die URL-Weiterleitung klappt lokal - aber nicht im Web. Hier mal das Script:
PHP:
<?php
ob_start();

session_start();
$url = $_SESSION["url"];
session_unset();
session_destroy();

if(isset($_COOKIE["Session"]))
{
	setcookie("Session","NULL",-3600);
}

header ("Location: ".$url);
ob_end_flush();
?>
Weiß jemand woran das liegt? Die URL wird auf jedenfall weiter gegeben!
 
Das hatte ich zwar gemacht, jetzt hab ich es aber folgendermaßen gemacht:
PHP:
<?php
ob_start();

session_start();
$url = $_SESSION["url"];
echo $url.'<br />';
session_unset();
echo $url.'<br />';
session_destroy();
echo $url.'<br />';

if(isset($_COOKIE["Session"]))
{
	setcookie("Session","NULL",-3600);
}
echo $url.'<br />';
header ("Location: ".$url);
ob_end_flush();
?>
Es wird nur einmalig ausgegeben! Also ist die Variable nach "session_unset();" nicht mehr vorhanden. Wie kann ich das verhindern?

PS: Die Ausgabe klappt local überhaupt nicht - da sind ganz schön krasse Unterschiede! Ohne header() bekomm ich immer die URL ausgegeben bei localhost - Im web nur 1x!
 
Zuletzt bearbeitet:
Das klappt jetzt. In einer anderen Dokumentation stand, dass session_unset() auch alle mit den Session-Variablen verknüpften Variablen löscht ;)

Dann nochmal was anderes: Bei mir wird ab und zu ein Cookie nicht gelöscht, obwohl er mit time()-1 (oder time()-3600 - macht keinen unterschied). geschrieben wird ^^ Ich will halt, dass der Cookie SOFORT gelöscht wird, und nicht erst am ende der Sitzung. Wie mache ich das?


Gruß Radhad
 
ein Cookie wird immer erst bei nächsten Reload gelöscht. Um das zu erzwingen mach ich einen header Aufruf

PHP:
    function logout()
    {
        #Cookies zurücksetzen
        setcookie("login", "", time()-(60*60*24*7)); #1 Woche verfallen
        setcookie("pass", "", time()-(60*60*24*7)); #1 Woche verfallen
        
        #Sessions löschen
        session_destroy();    
        
        header("Location: ".BASEURL."");
    }

Bei dieser Funktion ist sofort alles gelöscht. Das ganze muss natürlich vor jeglicher Ausgabe verarbeitet werden.
 
Zurück