Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Keine neue Session_id() ohne Browserschließung

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Keine neue Session_id() ohne Browserschließung

    Hallo,
    folgendes kleines Problem, ja ich fange erst mit php an.

    Sitze grad am Sessionmanagement, welches ich über cookies realisiere.
    Das Problem besteht hierbei darin, dass wenn ich den Browser schließe und ich mich neu anmelde mir eine neue Session_Id gegeben wird. Wenn ich mich allerdings nur auslogge und wieder einlogge und den Browser nicht schliesse, auch mit einem anderen User, bekomme ich keine neue Session_ID, sondern die alte.
    Das Cookie an sich löscht er allerdings, die logout.php scheint also zu funktionieren.
    Was kann ich da tun?


    Das Formularfeld:
    PHP-Code:
    <?php session_start (); ?>
    <html> 
    <head> 
      <title>Login</title> 
    </head> 

    <body>  
    <?php 
    if (isset ($_REQUEST["fehler"])) 

      echo 
    "Die Zugangsdaten waren falsch."

    ?> 
    <form action="login_cookie.php" method="post"> 
      Name: <input type="text" name="name" size="20"><br> 
      Kennwort: <input type="password" name="pwd" size="20"><br> 
      <input type="submit" value="Login"> 
    </form> 
    </body> 
    </html>
    Hier wird ein Cookie gesetzt und eine session_id als wert eingetragen. und dann weitergeleitet wenn der user in der DB gefunden wird.
    PHP-Code:
    <?
    session_start();
    // Datenbankverbindung aufbauen 
    $connectionid = mysql_connect ("localhost", "***", "***"); 
    if (!mysql_select_db ("***", $connectionid)) 

     die ("Keine Verbindung zur Datenbank");

    $sql = "SELECT ". 
        "username, valid ".
      "FROM ".
        "user ".  
      "WHERE ". 
       "(username like '".$_REQUEST["name"]."') AND ". 
       "(password = '".$_REQUEST["pwd"]."')";

    $result = mysql_query($sql);

    if (mysql_num_rows ($result) ==  1)  
    {
     $cookiename = "MyTest";
     $cookiewert = session_id();
     setcookie($cookiename,$cookiewert);
     header ("Location: intern_cookie.php"); 


    else 

     ("Location: Formular.php?fehler=1");
    }  
    ?>
    Hier hin wird man weitergeleitet wenn der Nutzer in der DB gefunden wurde.
    PHP-Code:
    <? 
    session_id();
    session_start(); 
    <html> 
    <head> 
      <title>Interne Seite</title> 
    </head> 
    <body> 
    INTERNER BEREICH
    <p>
    <? 
    echo $_COOKIE["MyTest"];
    ?> 
      <hr> 
      <a href="logout.php">Ausloggen</a> 
    </body> 
    </html>
    PHP-Code:
    <?php 
    ob_start 
    (); 

    setCookie("MyTest","",-3600);
    session_start (); 
    session_unset (); 
    session_destroy (); 


    header ("Location: formular.php"); 
    ob_end_flush (); 
    ?>
    Vielen Dank schonmal für die Hilfe.

  • #2
    PHP: session_destroy - Manual
    session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.

    In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.
    Und darunter steht ein Beispiel.

    Beim Einloggen solltest Du außerdem session_regenerate_id() verwenden.

    Kommentar


    • #3
      Hm, hatte die regenerate-anweisung wohl vorhin an der falschen Stelle gesetzt, da lag der Hund begraben. Der Rest funktioniert wunderbar, dankeschön für schnelle Hilfe.

      mfg Maggus

      Kommentar

      Lädt...
      X