Ankündigung

Einklappen
Keine Ankündigung bisher.

Login Problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login Problem

    Hallo,

    Da ich leider mein Problem nicht im forum gefunden habe frage ich nun einfach mal. Ich habe folgendes Problem mit einem Login der auf SESSIONS passiert. Wenn ich mich einlogge und wieder auslogge und danach auf Zurück im Browser klicke bin ich auf einmal wieder eingeloggt. Muss sagen ist für mich nicht verständlich da ich nichts über die Url weitergebe bzw. die Session beende (hoffe ich jedenfalls :wink: )

    Hier sind meine Dateien, vielleicht könnt ihr mir weiterhelfen wie ich dieses Problem beseitige bzw. vermeiden kann.

    Muss auch noch schnell sagen das es auch vorkommt wenn man mehrmals auf zurück (Browser) geklickt hat und danach wieder vor dann passiert es manachmal das eine SESSION Variable was zb. einen Usernamen beinhaltet einfach auf einen Boolischen Wert (true) gesetzt wird???

    index.php
    Code:
    <?
    $username = "Suppenfritz";
    $passwort = "test";
    if(isset($user) && isset($pass) && $user == $username && $pass == $passwort){
    	session_start();
    	$_SESSION['user_name'] = $user;
    	echo "SESSION initialisiert!";
    } elseif($action =="logout"){
    	session_start();
    	$_SESSION = array();
    	session_destroy();
    	echo "SESSION gelöscht!\n\nSie sind jetzt ausgeloggt!";
    }
    ?>
    <html>
    <head>
    <title>Login - Test</title>
    </head>
    <body bgcolor=lightblue>
    
    <div align=center><h1><u>Login - Test</u></h1>
    <?
    
    //Inhalt von Tabelle erzeugen
    echo "<table border><tr><td>\n";
    // SESSION initialisieren
    //session_start();
    if(isset($_SESSION['user_name']) && $_SESSION['user_name'] == $user){
    	include('menu.php');
    } else {
    	include('login.php');
    }
    ?>
    
    
    <?	
    echo "</td><td>\n";
    include('main.php');
    ?>
    </td></tr></table>
    </div>
    </body>
    </html>
    login.php
    Code:
    <form name=frm1 action="index.php" method=post>
    	Benutzername:
    
    	<input name=user>
    
    	Passwort:
    
    	<input type=password name=pass>
    
    
    	<input type=reset value=Del>&&<input type=submit value=Login>
    </form>
    menu.php
    Code:
    <script language=javascript>
    function show_ebene(id)
    {
    	menu = "ebene" + id;
    	if(document.getElementById(menu).style.display == "none"){
    		document.getElementById(menu).style.display = "";
    	} else {
    		document.getElementById(menu).style.display = "none";
    	}		
    }
    </script>
    <table border><tr><td>
    <ul>[*]Erster Eintrag
    <li style="cursor:hand; color:blue" onclick="show_ebene(1)">Zweiter Eintrag
    <ul id=ebene1 style="display:none">
    	[*]Eintrag 1
    	<li style="cursor:hand; color:blue" onclick="show_ebene(1);show_ebene('1_1')">Eintrag 2
    	<ul id=ebene1_1 style="display:none">
    		[*]Ein 1
    		[*]Logout
    	[/list][/list][*]Dritter Eintrag[*]Vierter Eintrag[/list]
    </td></tr></table>
    main.php
    Code:
    
    <u>SESSION´s Daten</u>
    
    
    
    <table border>
    <?
    echo "<tr><td>Session Name:</td><td>".session_name()."</td></tr>\n";
    echo "<tr><td>Session ID:</td><td>".session_id()."</td></tr>\n";
    echo "<tr><td>Session User:</td><td>".$_SESSION['user_name']."</td></tr>\n";
    echo "<tr><td>Session Var´s:</td><td>";
    var_dump($_SESSION);
    echo "</td></tr>\n";
    echo "<tr><td>Post Var´s:</td><td>";
    var_dump($_POST);
    echo "</td></tr>\n";
    echo "<tr><td>Benutzername:</td><td>".$user."</td></tr>\n";
    echo "<tr><td>Kennwort:</td><td>".$pass."</td></tr>\n";
    ?>
    </table>
    Hoffe das ich hiermit nicht schon oft vorhandenes im Forum anspreche, aber leider habe ich einfach nichts derartiges gefunden.

    mfG Suppenfritz

  • #2
    Re: Login Problem

    Zitat von Suppenfritz
    Ich habe folgendes Problem mit einem Login der auf SESSIONS passiert. Wenn ich mich einlogge und wieder auslogge und danach auf Zurück im Browser klicke bin ich auf einmal wieder eingeloggt. Muss sagen ist für mich nicht verständlich da ich nichts über die Url weitergebe bzw. die Session beende (hoffe ich jedenfalls :wink: )
    Das reicht nicht:
    session_start();
    $_SESSION = array();
    session_destroy();
    ... weil session_destroy() das Sessionfile nicht sofort löscht.
    session_write_close() schreibt $_SESSION (ist ja korrekt geleert) ins Sessionfile und dann mit header ('Location: ...'); exit; das Script beenden und neu starten. Dann schickt der Client zwar brav den Keks, aber das dazugehörige Sessionfile enthält keine Daten mehr.

    Guck Dir das Beispiel an:
    http://test.php-help.info/auth-1/

    Achte auf das Logout

    Kommentar


    • #3
      ich benutze bei logouts erst
      session_unset()
      und dann auch noch
      session_destroy()
      das klappt immer wunderbar

      Kommentar


      • #4
        Zitat von burner.nst
        ...das klappt immer wunderbar
        Beim OP offenbar nicht.

        An dem Beispiel-Script hatte ich etwas rumbasteln müssen, weil PHP das Session File nicht sofort löscht. session_write_close() garantiert zumindest, daß in dem Falle ein leeres $_SESSION ins File geschrieben wird.

        Kommentar


        • #5
          Versuch

          Hallo,

          Dank euch für eure Tipps, werde das ganze mal umsetzen/versuchen, schaun ma mal ob ich das hinkriege :wink:

          Kommentar

          Lädt...
          X