Ankündigung

Einklappen
Keine Ankündigung bisher.

Login-Script Folge 387 :-)

Einklappen

Neue Werbung 2019

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

  • Login-Script Folge 387 :-)

    Hallo,
    ich habe ein LoginScript gebastelt welches auch gut funzt. Wenn ich mich anmelde werde ich automatisch auf die Homepage weitergeleitet.
    Wenn ich nun aber den Browser schliesse und einen neuen öffne, dann über den Verlauf die geschützten Seiten aufrufe (oder einfach die adresse für ne geschützte Seite eingebe) kann ich mich wieder auf der kompletten Website bewegen ohne mich vorher anmelden zu müssen.
    Wie verhindere ich dass???
    Sorry falls die Frage schon einmal gestellt wurde aber ich habe auf anhieb mit der Suchfunktion nichts dergleichen gefunden...

    ThX an alle die mir helfen

    Maggus

  • #2
    sessions

    Kommentar


    • #3
      Also, du musst in jeder Datei überprüfen, ob du eingeloggt bist.

      Das geht am besten, wenn du die Daten mit Sessions weitergibst und dann in jeder Datei ausließt und überprüfst, ob die Daten richtig sind.

      Sessions wurden schon 100emal besprochen, such einfach mal danach und modifiziere dein Scripts!

      wilko

      Kommentar


      • #4
        Also ich hab jetzt mal versucht den script aus diesem Thread :http://www.phpfriend.de/forum/viewto...light=sessions

        an meine Seite anzupassen.

        Meine Login.php
        Code:
        ?>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Login</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <? 
        session_start(); 
        include 'sessionhelpers.inc.php'; 
        if (isset($_POST['login'])) 
        { 
            $userid=check_user($_POST['username'], $_POST['userpass']); 
            if ($userid!=false) 
                login($userid); 
        		@session_start (); // ... die Session gestartet und ... 
                $_SESSION["login"] = True; // ... die Sessionsvariable auf "True" gesetzt. 
          
                 
        
            else 
                echo 'Ihre Anmeldedaten waren nicht korrekt!';
        		$_SESSION["login"] = False; 
        } 
        if (!logged_in()) 
            echo '<form method="post" action="index.php"> 
                <label>Benutzername:</label><input name="username" type="text">
         
                <label>Passwort: </label><input name="userpass" type="password" id="userpass">
         
                <input name="login" type="submit" id="login" value="Einloggen"> 
            </form>'; 
        else 
            echo 'Ausloggen'; 
        echo '
        
        Check'; 
        ?> 
        </head>
        
        <body>
        
        <?
        ob_end_flush();
        ?>
        </body>
        </html>
        Meine Sessionhelper.inc.php

        Code:
        <? 
        function connect() 
        { 
            $con= mysql_connect('localhost','root','') or die(mysql_error()); 
             mysql_select_db('secu',$con) or die(mysql_error()); 
        } 
        
        function check_user($name, $pass) 
        { 
            $sql="SELECT UserId 
            FROM users 
            WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') 
            LIMIT 1"; 
            $result= mysql_query($sql) or die(mysql_error()); 
            if ( mysql_num_rows($result)==1) 
            { 
                $user=mysql_fetch_assoc($result); 
                return $user['UserId']; 
            } 
            else 
                return false; 
        } 
        
        function login($userid) 
        { 
            $sql="UPDATE users 
            SET UserSession='".session_id()."' 
            WHERE UserId=".$userid; 
             mysql_query($sql); 
        } 
        
        function logged_in() 
        { 
            $sql="SELECT UserId 
            FROM users 
            WHERE UserSession='".session_id()."' 
            LIMIT 1"; 
            $result= mysql_query($sql); 
              return ( mysql_num_rows($result)==1); 
        } 
        
        function logout() 
        { 
            $sql="UPDATE users 
            SET UserSession=NULL 
            WHERE UserSession='".session_id()."'"; 
             mysql_query($sql); 
        } 
        
        connect(); 
        ?>
        Logged_in.php

        Code:
        <?
        session_start(); 
        
        
        ?>
        
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Login ueberpruefen</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <? 
        
        include 'sessionhelpers.inc.php'; 
        echo 'Sie sind '; 
        if (!logged_in()) 
            echo 'nicht '; 
        echo 'eingeloggt.
        
        '; 
        echo 'Start'; 
        ?> 
        <?
        ob_end_flush();
        ?>
        Auf jede meiner Seiten habe ich nun diesen Code oben reingesetzt:

        Code:
        <?php 
        @session_start (); // Die Session wird gestartet. 
        if ((!isset ($_SESSION["login"])) or (!$_SESSION["login"])) { 
           // Hier wird überprüft, ob die Session überhaupt vorhanden ist und wenn ja, 
           // ob das Login "True" ist. Wenn nicht, wird man wieder auf die Login-Seite 
           // geleitet. 
           header ("Location: http://localhost/login.php"); 
           exit; 
        } 
        ?>
        Wenn ich mich jetzt anmelde gehts nicht zur Startseite meiner Website sondern zurück aufs Login.php.
        Dass müsste ja dann heisen, dass die session nicht True ist. Oder?
        Was mache ich falsch???

        ThX für eure Geduld mit einem Anfänger wie mir

        Maggus

        Kommentar


        • #5
          Zitat von maggus
          Code:
          <?php 
          @session_start (); // Die Session wird gestartet. 
          if ((!isset ($_SESSION["login"])) or (!$_SESSION["login"])) { 
             // Hier wird überprüft, ob die Session überhaupt vorhanden ist und wenn ja, 
             // ob das Login "True" ist. Wenn nicht, wird man wieder auf die Login-Seite 
             // geleitet. 
             header ("Location: http://localhost/login.php"); 
             exit; 
          } 
          ?>
          Dieser da hast du von mir und zwar 100%!
          $_SESSION["login"] ist TRUE, wenn du nicht auf die login.php geleitet wirst.

          Kommentar


          • #6
            Ja hab ich von dir
            Entschuldige die blöde Frage, aber was muss ich jetzt ändern damit es funktioniert???

            Kommentar


            • #7
              Du hattest nirgendswo Session Destroy wenn ich das so beim übergesehen gelesen habe, dann wird die Session auch nicht beendet!

              Gruß Garry

              Kommentar


              • #8
                Zitat von maggus
                Ja hab ich von dir
                Entschuldige die blöde Frage, aber was muss ich jetzt ändern damit es funktioniert???
                Kein Problem , ich freue mich, wenn ich jemandem helfen kann! Du musst noch ein Logout programmieren, damit die Session nicht bleibt. Hier gleich meine logout.php:
                Code:
                <?php
                @session_start ();
                session_destroy ();
                header ("Location: http://localhost/login.php");
                exit;
                ?>
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
                "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                <html>
                <head><title>Login-System</title></head>
                </html>
                MfG
                Alex

                Kommentar


                • #9
                  ein bisschen eigenartig nach exit; noch htmltags einzufügen@general alex

                  Kommentar


                  • #10
                    und dieser Logout-Schnipsel den häng ich auch über jede Seite?

                    Kommentar


                    • #11
                      nein der kommt nur wenn einer sich ausgeloggt hat (auf den logout link geklickt hat)

                      Kommentar


                      • #12
                        ok tHx :P

                        Kommentar


                        • #13
                          Zitat von burner.nst
                          ein bisschen eigenartig nach exit; noch htmltags einzufügen@general alex
                          Sorry, ich hatte beim programmieren einfach bei jeder Datei die HTML-Code kopiert !

                          Kommentar


                          • #14
                            Zitat von General Alex
                            ...ein Logout programmieren, damit die Session nicht bleibt. Hier gleich meine logout.php:
                            Etwas suboptimal.
                            1. kannste das HTML weglassen, weil das Script beim exit beendet wird.
                            2. solltest Du noch dafür sorgen, daß das Sessionfile garantiert nicht mehr beinhaltet.

                            Beim session_write_close() bin ich mir nich ganz sicher, ob es vor oder nach session_destroy() hin gehört.
                            Code:
                            <?php
                            @session_start ();
                            $_SESSION = array(); # alle Vars löschgen.
                            
                            # entweder hier
                            session_write_close ();
                            ###
                            
                            session_destroy ();
                            
                            # oder hier
                            session_write_close ();
                            ###
                            
                            header ("Location: http://localhost/login.php");
                            exit;
                            ?>

                            Kommentar

                            Lädt...
                            X