Ergebnis 1 bis 9 von 9

Thema: Logout und Back Button

  1. #1
    Interessierte/r
    Registriert seit
    24.09.2004
    Ort
    Ispringen bei PF
    Beiträge
    149
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Logout und Back Button

    Hi,

    mache meinen Logout so:
    Code:
    //ausloggen
    if($action=="logout"){
    session_unset();
    session_destroy();
    session_start()}
    Wenn ich aber nun auf den back Button des Browser klicke bin ich wieder eingelogged... Kann man das irgendwie verhindern? Wollte keine Cookies setzen um das zu lösen.

    Wird durch session_destroy() eigentlich die SessionID komplett gelöscht oder wird bei einem erneuten session_start() die gleiche SessionID verwendet wenn ich den Browser zwischendurch nicht schließe?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Gruß

    Matthias

  2. #2
    Großmeister(in)
    Registriert seit
    31.10.2005
    Ort
    Bei Muddi, wo sonst
    Beiträge
    524
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    warum startests du die session nach session_destroy gleich wieder.
    Für einen log out bauchst du nur session_destroy. damit ist die sache erledigt.
    Wenn du nun den Zurückbutton drückst, dann kommst du zwar wieder auf die seite, auf der du vorher warst, aber du kannst keine aktionen durchführen, für die du eine session benötigst.

    EDIT//
    Ausserdem hast du hinter session_start(); das ";" vergessen. Aber du brauchst es sowieso nicht!
    Viele Grüße

    Mir nicht

  3. #3
    Interessierte/r
    Themenstarter

    Registriert seit
    24.09.2004
    Ort
    Ispringen bei PF
    Beiträge
    149
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Die Session starte ich deshalb gleich wieder, falls sich derjenige wieder direkt einloggen möchte. Da brauche ich die Session ja wieder.
    Gruß

    Matthias

  4. #4
    Großmeister(in)
    Registriert seit
    31.10.2005
    Ort
    Bei Muddi, wo sonst
    Beiträge
    524
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Aber du startest die session doch sowieso beim login oder?
    Wenn er sich nämlich nicht einloggen will, dann hast ne offene session rumfliegen = Sicherheitslücke!
    Viele Grüße

    Mir nicht

  5. #5
    Interessierte/r
    Themenstarter

    Registriert seit
    24.09.2004
    Ort
    Ispringen bei PF
    Beiträge
    149
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi,

    das mit der Sicherheitslücke war mir nicht bewußt, habe die Session gleich oben auf der indexseite gestartet, ob er einlogged oder nicht. Werde ich ändern!

    Kann mein Problem glaube ich präzisieren. Wenn ich auf den Back Button klicke sendet der browser die Login daten erneut und deshalb kann man sich wieder einloggen - auch Sicherheitslücke!

    Zum Login:
    Speichere die SessionID in der DB und frage dann auf den geschützten Seiten nach der User Id (session Variable). Wenn vorhanden dann gleiche ich die SessionID mit dem gespeicherten Wert in der DB ab.

    Zum Logout.
    Jetzt wird die Session zerstört, die Session Variablen gelöscht und die SessionID aus der DB gelöscht.

    Wenn der browser jetzt die Daten erneut sendet (Back button) habe ich die gleiche SessionID in der DB stehen wie vorher?!

    Kann man da was machen?
    Gruß

    Matthias

  6. #6
    Großmeister(in)
    Registriert seit
    31.10.2005
    Ort
    Bei Muddi, wo sonst
    Beiträge
    524
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Du brauchst die nicht in der DB zu speichern.
    Also folgendes:
    Du machst beim login folgendes
    Code:
    if (btnLogIn)
    {
      session_start();
      session_register($SessionID, //usw. alle variablen, die überall(!) in   deiner Session zur Verfügung stehen sollen
    }
    Dann weiter unten machst du:
    Code:
    $SessionID = session_id();
    Jetzt hast du deine session id in $SessionID gepeichert und da du sie, dank session register überall zur verfügung hast, machst du auf jeder weiteren seite am anfan (und ich meine ganz am Anfang) wieder session_start();
    Dadurch nimmt er die schon gestartete session (aber das weist du ja).
    Also:
    Code:
    session_start();
    if session_id() == $SessionID
    {
      .....//dein code usw.
    }
    else //falls die session nicht vorhanden ist also z.b. nicht eingeloggt
    {
      //Fehlermeldung, oder zurückleitung zur login page z.b.
      <meta http-equiv="refresh" content="0 URL=login.php">
    &#125;
    Probiers aus und sag, ob geklappt hat.

    EDIT//
    Und wegen sicherheitslücke. Ist nur so, wenn du eine offene session hast, könnte man ja die session id verwenden, um sich unberechtigten zugang zur seite zu verschaffen. Es ist zwar sehr unwahrscheinlich, da es ja für die session normalerweise auch einen timeout geben sollte, aber die möglichkeit besteht!
    Viele Grüße

    Mir nicht

  7. #7
    Teeny
    Registriert seit
    01.12.2005
    Ort
    Austria
    Beiträge
    43
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    hallo

    statt
    Code:
    <meta http-equiv="refresh" content="0 URL=login.php">
    wäre
    Code:
    header&#40;"location&#58; "http&#58;//seite"&#41;;
    zu empfehlen

    wozu session_start() nach dem destroy wieder gestartet wird:
    als ich zum beispiel nutze das, um zum Beispiel die ausgewählte Sprache der Seite beizubehalten
    gruß daniel

  8. #8
    Großmeister(in)
    Registriert seit
    31.10.2005
    Ort
    Bei Muddi, wo sonst
    Beiträge
    524
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Löst man das nicht normalerweise über cokkies?
    Viele Grüße

    Mir nicht

  9. #9
    Interessierte/r
    Themenstarter

    Registriert seit
    24.09.2004
    Ort
    Ispringen bei PF
    Beiträge
    149
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi,

    löse es nun wie folgt:

    Login:
    Code:
    session_start&#40;&#41;;
         if &#40;mysql_num_rows&#40;$res&#41;=="1"&#41;
         &#123;
            $log_array=mysql_fetch_array&#40;$res&#41;;
            $user_id=$log_array&#91;'id'&#93;;
            $user_name=$log_array&#91;'vorname'&#93;.''.$log_array&#91;'name'&#93;;
            $session=session_id&#40;&#41;;
         &#125;
         else
         &#123;
            //Kein DB Treffer Benutzer oder Passwort falsch
            header &#40;"Location&#58; index.php?action=error&section=login"&#41;;
         &#125;
    Logout:
    Code:
    if&#40;$action=="logout"&#41;&#123;
    session_unset&#40;&#41;;
    session_destroy&#40;&#41;;
    &#125;

    Beides wird in die index.php included. die IndexSeite sie so aus:
    Code:
    <?php
    //Login einbinden
    include"inc/login.inc.php";
    //$user_name speichert den Namen des User
                 session_register&#40;user_name&#41;;
                 if&#40;$user_name&#41;$user_name="$user_name";
    //$user_id speichert die ID des User
               session_register&#40;user_id&#41;;
               if&#40;$user_id&#41;$user_id="$user_id";
    //$user_id speichert die ID des User
               session_register&#40;session&#41;;
               if&#40;$session&#41;$session="$session";
    //Logout einbinden
         include "inc/logout.inc.php";
    //einbinden des link_router
         include "inc/link_router.inc.php";
    ?>

    Es tut wunderbar!

    Zum Ablauf:

    Beim Login wird wird die session gestartet. DB Abfrage (fehlt hier) ob Name und Passwort stimmen. Dann wird die $session =SessionID.

    Beim Logout einfach alle Sessionvariablen löschen und die Session zerstören.

    Auf der Index Seite werden die Variablen definiert. Hatte ich erst auch beim Login, da der Login aber erst aufgerufen wird wenn das Formular abgeschickt wird hatte ich dann die Variablen später nicht mehr definiert. So läuft es jedenfalls.

    Frage: Kann es sein, das wenn die Session automatisch gestartet wird wenn ich SessionVariable definiere?

    Existiert eine SessionID ohne das ich eine Session gestartet habe?
    Gruß

    Matthias

Ähnliche Themen

  1. Formular ( logout ) absenden, gleichzeitig Neue Seite laden
    Von D-Night im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 10.03.2007, 22:10
  2. LDAP User Folder - Logout
    Von Florian F im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 1
    Letzter Beitrag: 22.02.2007, 21:06
  3. Logout Problem
    Von ma74 im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 3
    Letzter Beitrag: 27.04.2006, 19:19
  4. Automatischer Logout nach kurzer Zeit
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 26.02.2006, 17:31
  5. Back-button
    Von Sleeme im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 15
    Letzter Beitrag: 01.12.2005, 01:04

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •