Session variablen in links (HTML)
aNtraXx 17.11.2003 - 09:47 724 8
aNtraXx
trailer park king
|
also wie man an de source unschwer erkennt arbeite ich mit session variablen und möchte gerne ein logout machen (cookie löschen). jedoch funktioniert das ganze nicht. es nimmt mir das _SESSION nicht an. habs auch schon mit ein paar anderen sachen probiert, habs aber nur einmal mit "normalen" variablen zum laufeb gebracht. jetzt geht allerdings auch das nicht mehr. php.ini und dergleichen sind unverändert geblieben. kann mir da vielleicht jemand weiterhelfen? tia bernhard <? session_start();
if(isset($_SESSION['logout']))
{
setcookie("Elanium","",time()-3600); //Zum Löschen wird eine vergangene Zeit angegeben
?>
<script type="text/javascript">
window.open("loggin.php","_self");
</script>
<?
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Logged In </TITLE>
<link rel="stylesheet" type="text/css" href="styles\style.css"> <!-- Stylesheet einfügen -->
<STYLE type="text/css">
body
{
background-color: #000000;
font-weight: normal;
}
</STYLE>
</HEAD>
<BODY>
Logged in as: <br>
<b><?echo $_SESSION['Benutzername'];?></b>
<br>
<br>
<br>
<br>
<br>
<a href="logged_in.php?_SESSION['logout']=true">logout</a>
</BODY>
</HTML>
|
atrox
in fairy dust... I trust!
|
nach dem es nur ein ausschnitt ist, hier ein paar allgemeinte anmerkungen:
a) du mußt cookies genauso löschen wie du sie gesetzt hast (also zb mit dem selben pfad, und dem selben namen "Elanium")
b) du kannst _SESSION nicht einfach so mit dem GET-parameter überschreiben.. übergib doch ein logged_in.php?logout=true und prüfe dann auf $_GET[logout]
c) unklar ist, warum du cookies und sessions zusammen verwendest.
|
watchout
Legendundead
|
aaaja, und das is natürlich html  eine session wird mittels session_destroy() beendet - anders is es nicht möglich. Wenn du nur eine Sessionvariable löschen willst -> unset(bla). Wenn du sessions nicht abcheckst und deswegen _irgendwas_ schreibst, solltest du mal das handbuch durchlesen.
|
aNtraXx
trailer park king
|
cookie wird verwendet damit der user beim refresh bzw neuem seitenaufruf nicht ausgelogt wird.
sessions werden verwendet damit das ganze auch funktioniert wenn register_globals in der php.ini auf off sind.
daher bringts ja erst wieder nix wenn ich mit normalen variablen wie $logout benutze.
meiner ansicht nach ist <a href> in HTML also was ist daran bitte falsch? das Sessions PHP sind ist doch eh klar
|
atrox
in fairy dust... I trust!
|
du konstruierst da irgendwas, das in der form gar nicht notwendig ist.
a) was ist so schlimm, wenn ein ausgeloggter user, sich beim refresh nochmal auslogged ?
b) löst man die refresh-probleme für gewöhnlich über eine zwischenseite mit einem HTTP-Redirect: zb header("Location: otherpage.php");
c) $_GET $_POST $_COOKIES $_SESSION funktionieren unabhängig ob register globals gesetzt ist oder nicht. wir haben nicht gesagt, daß du $logout verwenden sollst.
|
aNtraXx
trailer park king
|
achso... dann hab ich eine falsche info von woanders bekommen.
dann sind die sessions also eh nur dazu gut dass sie auf jedem php.file zugänglich sind.
gibts fü das HTTP-Redirect ein HowTo ?
das problem liegt ja darin das ein eingeloggter user ausgeloggt wird
|
atrox
in fairy dust... I trust!
|
da ist eher was an deinem pagekonzept faul, oder du implementierst die falschen dinge in falschen seiten... warum zeigst du dem _eingeloggten_ user eine seite die beim realoaden eine abmeldung durchführt?
der logout link, sollte zu einem script führen das abcheckt, daß dieser logout-link gedrückt wurde (zb mit ?logout=1) und den neuen _zustand_ im session-objekt vermerken (bzw die session zerstören)
zusammenfassung: in der regel gilt: - _Befehle_ über POST und GET schicken. - _Zustände_ in der session merken.
PS: eine andere form für redirect führst du ja bereits aus: mit javascript. PPS: schon mal darüber nachgedacht, einen link zu login.php?logout=true zu machen, und login.php die session zerstören lassen?
Bearbeitet von atrox am 17.11.2003, 12:53
|
watchout
Legendundead
|
antraxx, ich ahne was du denkst...
du denkst, dass eine session automatisch nach einem F5 oder anderem reload beendet wird -> falsch, sessions bleiben so lange erhalten wie der browser offen ist. (bzw. eine serverabhängige maximale zeit der inaktivität)
btw: sessions haben mit html genau garnix zu tun.
|
aNtraXx
trailer park king
|
so hab mir mal eure vorschläge zu herzen genommen. zb das login.php das cookie zerstört ist schon mal eine sehr gute idee. trotzdem funktioniert es nicht.. keinen plan warum. es sieht wie folgt aus: logged_in.php: <a href="Login.php?logout=1">logout</a>
bzw. <script type="text/javascript">
function logout()
{
var aufruf;
alert('MUH');
aufruf = ("Login.php?logout=1");
parent.frame_left_top.location.href=aufruf;
}
</script>
<a href="javascript:logout()">logout</a>
und im login.php /*-- LOGOUT bzw. Cookie zerstören -----------------------------*/
if($_GET[logout])//isset($logout)
{
setcookie("Elanium","",time()-3600);
}
/*-------------------------------------------------------------*/
--> edit: so nun gehts. hab im nachhinein unset($_COOKIE['Elanium']) hinzugefügt und nun geths.
Bearbeitet von aNtraXx am 20.11.2003, 09:01
|