hi,
ich habe folgendes Problem:
ich will mir ein auf einer Seite ein User Login - Logout bauen.
Frage in ner DB den User ab - kann er sich identifizieren wird die SESSION Variable logged auf true gesetzt.
Beim Ausloggen dann entsprechend auf false.
Habe eine index.php mit langer switch abfrage - je nach case wird dann der content angezeigt.
Klappt soweit auch - aber bei Opera und Safari habe ich denn effekt das ich nach dem auslogen geschützte Bereiche zwar nicht direkt an anwählten kann da $_SESSION['logged'] richtig abgefragt wird, beim navigieren mit dem Backbutton aber schon.
Lasse ich mir $_SESSION['logged'] ausgeben wird beim navigieren mit dem Backbutton nach einem Ausloggen im FF und IE korrekt $_SESSION['logged'] = false angezeigt, bei Safari & Opera aber true.
Mal einen Auzug aus dem Code:
Wie zerstöre ich die SESSION so das es auch Opera / Safari mitbekommen?
Schon THX in Advance....
ich habe folgendes Problem:
ich will mir ein auf einer Seite ein User Login - Logout bauen.
Frage in ner DB den User ab - kann er sich identifizieren wird die SESSION Variable logged auf true gesetzt.
Beim Ausloggen dann entsprechend auf false.
Habe eine index.php mit langer switch abfrage - je nach case wird dann der content angezeigt.
Klappt soweit auch - aber bei Opera und Safari habe ich denn effekt das ich nach dem auslogen geschützte Bereiche zwar nicht direkt an anwählten kann da $_SESSION['logged'] richtig abgefragt wird, beim navigieren mit dem Backbutton aber schon.
Lasse ich mir $_SESSION['logged'] ausgeben wird beim navigieren mit dem Backbutton nach einem Ausloggen im FF und IE korrekt $_SESSION['logged'] = false angezeigt, bei Safari & Opera aber true.
Mal einen Auzug aus dem Code:
PHP-Code:
session_start();
if(!isset($_SESSION['logged'])){
$_SESSION['logged'] = false;
}
if(!isset($_GET['action'])) {
include("x_inc/start.php");
}else if(!$_SESSION['logged']){
switch($_GET['action']){
case "login":
if(login()){// Datenbank Abfrage fürs einloggen
$_SESSION['logged'] = true;
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=secure", true, 302);
}else{
$message = "Fehler beim einloggen";
include("x_inc/error.php");
}
break;
case "confirmReg":// Anmeldung
if(confirmReg()){// wenn user sich registrieren konnte
$_SESSION['logged'] = true;
$message .= "<p>bist drine</p>";
include("x_inc/secure.php");
}else{
$message = "Fehler beim Registrieren";
include("x_inc/error.php");
}
break;
default: include("x_inc/default.php");
}
}else if($_SESSION['logged']){
switch($_GET['action']){
case "secure":
$message .= "<p>logged in</p>";
include("x_inc/secure.php");
break;
case "logout":
$_SESSION['logged'] = false;
$_SESSION = array();
session_destroy();
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=loggedOut", true, 302);
break;
default: include("x_inc/default.php");
}// switch cascade
}
Schon THX in Advance....
Kommentar