fehler bei login

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

  • fehler bei login

    Hi Leute, also ich hab mal probiert ein Login Script zu programmieren welches auf meiner Seite rechts im menü untergebracht ist.
    Ich hab allerdings ein Problem, ich muss nämlich nachdem login sowie dem logout ein oder mehrmals refreshen damit wieder das login feld bzw das logout feld erscheint.

    1.Nach dem einloggen z.B. erscheint dann nochmal das login formular, dadrunter steht dann allerdings eingeloggt als und der logout button.
    Wenn ich jetzt refreshe zeigt er alles korrekt an.

    2. Wenn ich logout drücke passiert das ähnlich, ich bin noch nicht son profi was php coding angeht, bin ehrlich gesagt schon froh das es prinzipiell klappt.


    Vielleicht hat jemand einen lösungsvorschlag und ein paar tipps zur verbesserung.
    Das file mit den functionen hab ich jetzt mal raus gelassen, ich glaub das braucht ihr dafür nicht.

    PHP-Code:
    <?
    //Wenn nicht eingeloggt:
    if (!logged_in()) {
        
        //Login Message        
        $loginmessage = "Sie sind nicht eingeloggt";
        echo $loginmessage;
        //Loginformular ausgeben
        echo '<form method="post" action="index.php?login">
        <label>Benutzername:</label><input name="username" type="text"><br>
        <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
        <input name="login" type="submit" id="login" value="Einloggen">
        </form>';
        if (isset($_POST['login']))
            {
            $userid=check_user($_POST['username'], $_POST['userpass']);
            if ($userid!=false)
            login($userid);
            else
            echo '<br>Ihre Anmeldedaten waren nicht korrekt!';
        }
        
    }

    //Überprüfen ob logout angegeben wurde,wenn ja die session destroyen
            $logout = $_GET['logout'];
            if ($logout) {
            $sql="UPDATE users SET user_session='',user_status='0' WHERE user_id=".$userid.";";
            $db->query($sql);
            @$_SESSION = array();
            @session_destroy();
            }
    //Wenn eingeloggt:
    if (logged_in()) {
        //Login Message
        
        $loginmessage = "Eingeloggt als $username";
        echo $loginmessage;    
            //Logout Link
            ?>
            <br><a href="index.php?logout=1">Logout</a>
            <?
    }
    ?>

  • #2
    1.Nach dem einloggen z.B. erscheint dann nochmal das login formular, dadrunter steht dann allerdings eingeloggt als und der logout button.
    Das wundert dich nicht wirklich, oder? genau das hast du doch auch in deinem code geschrieben.

    erst:
    PHP-Code:
    if (!logged_in()) { // zeige formular 
    dann:
    PHP-Code:
    login($userid); // der eigentliche Login. 
    2. Wenn ich logout drücke passiert das ähnlich, ich bin noch nicht son profi was php coding angeht, bin ehrlich gesagt schon froh das es prinzipiell klappt.
    Und wunder - oh wunder, die Ursache ist auch ähnlich.

    Kommentar


    • #3
      Re: fehler bei login

      Original geschrieben von analyzer
      1.Nach dem einloggen z.B. erscheint dann nochmal das login formular, dadrunter steht dann allerdings eingeloggt als und der logout button.
      Wenn ich jetzt refreshe zeigt er alles korrekt an.
      genauso hast du es auch programmiert.
      wenn nicht eingeloggt - zeige loginformular. DANACH machst du dann den login, wenn das formular übermittelt wurde!

      Kommentar


      • #4
        Erstmal Danke, ich hab wirklich was verwechselt Hab das ganze jetzt entsprechend angepasst.
        Letztes Problem das ich nur richtig weitergeleitet werde wenn ich auf den "check" link klicke.

        ihr könnt euch das ansehen unter www.sv-arnsberg09.de
        user: test
        pw: test
        auf den logout button muss ich auch noch 2 mal drauf drücken.

        Der login wird an der entsprechenden stelle includet, die action darf doch dann an die index gehen oder nicht?

        PHP-Code:
        <?
        //Wenn nicht eingeloggt:
            

                if (isset($_POST['login']))    {
                    $userid=check_user($_POST['username'], $_POST['userpass']);
                        if ($userid!=false) {
                            login($userid);
                        }
                        else {
                            echo 'Ihre Anmeldedaten waren nicht korrekt!';
                        }
                }
                
                if (!logged_in()) {
                echo '<form method="post" action="index.php">
                <label>Benutzername:</label><input name="username" type="text"><br>
                <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
                <input name="login" type="submit" id="login" value="Einloggen">
                </form>'; 
                }
                else {
                echo '<a href="index.php?logout=1">Logout</a>';
                echo '<p/><a href="index.php">Check</a>'; 
                }

        //Überprüfen ob logout angegeben wurde,wenn ja die session destroyen
                $logout = $_GET['logout'];
                if ($logout == 1) {
                $sql="UPDATE users SET user_session='',user_status='0' WHERE user_id=".$userid.";";
                $db->query($sql);
                @$_SESSION = array();
                @session_destroy();
                }
        ?>
        Zuletzt geändert von analyzer; 04.10.2006, 16:19.

        Kommentar


        • #5
          es soll so sein:
          der erste block ist if($_POST['login'])
          der zweite block ist if($_GET['logout'])
          erst dann kommt der Bildschirmaufbau.

          Ganz allgemein sieht der user zuerst den Bildschirm und macht dann eine Eingabe.
          Aber das Skript verarbeitet zuerst die (alle!) Eingaben und erstellt danach den Bildschirm.
          Zuletzt geändert von sternm; 04.10.2006, 16:29.

          Kommentar


          • #6
            Ich versteh das nicht sorry. Kannst du das nochmal für dumme erklären, hab die form noch ein wenig geändert.

            PHP-Code:
            <?

            //Wenn nicht eingeloggt:
                

                    if (isset($_POST['login']))    {
                        $userid=check_user($_POST['username'], $_POST['userpass']);
                            if ($userid!=false) {
                                login($userid);
                            }
                            else {
                                echo 'Ihre Anmeldedaten waren nicht korrekt!';
                            }
                    }
                    
                    
                    if (isset($_POST['logout'])) {
                    logout();
                    }
                    
                    if (!logged_in()) {
                    echo '<form method="post" action="index.php?login">
                    <label>Benutzername:</label><input name="username" type="text"><br>
                    <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
                    <input name="login" type="submit" id="login" value="Einloggen">
                    </form>'; 
                    }
                    else {
                    echo '<form method="post" action="index.php?logout">
                    <input name="logout" type="submit" id="logout" value="Ausloggen">
                    </form>'; 
                    
                    echo '<p/><a href="index.php">Check</a>'; 
                    }
                    
            ?>

            Kommentar


            • #7
              doch du hast es verstanden und es funktioniert. zweitens hast du nicht das 'formular'
              geändert sondern das skript. dh am Formular auch, aber das war nicht entscheidend.

              Der Kommentar am Anfang ist noch irreführend.

              die action="index.php?logout" bzw. "index.php?login" sind noch unschön.
              Es reicht jedesmal action="index.php" ausser du hast noch mehr im Sinn.
              Zuletzt geändert von sternm; 04.10.2006, 17:20.

              Kommentar


              • #8
                Ja es funktioniert auch im Prinzip. Also das Login script ansich, mein problem ist die Unterbringung im Menü.
                Das Menü soll geladen werden wenn der user eingeloggt. sprich userstatus auf 1 gesetzt wurde.
                Wenn du dir das auf der seite ansiehst wirst du merken was ich meine.
                Login daten stehen oben.

                PHP-Code:
                <?
                        //login modul include
                        include 'module/login/login.mod.php';?><br><?
                        if ($userstatus == 1) {
                        //Usermenü-Center/Info
                        echo "Username: ".$username."<br>";
                        echo "User-ID: ".$userid."<br>";
                        ?>
                        </div>
                        
                        <?
                        //Usermenü Menülinks
                        $sql="SELECT * FROM menu_eintrag WHERE menu_eintrag_status='1' AND menu_eintrag_menu='2' ORDER BY menu_eintrag_reihenfolge;";
                        $db->query($sql);
                        WHILE ($data=$db->data()) {
                                $menu2_eintrag_link = $data[menu_eintrag_link];
                                $menu2_eintrag_text = $data[menu_eintrag_text];
                                ?>
                                
                                : <a href="index.php<? echo $menu2_eintrag_link; ?>"><? echo $menu2_eintrag_text; ?></a><br>
                                <?
                                }

                Kommentar


                • #9
                  dann musst du $userstatus im login() und logout() auch setzen. und nicht nur
                  sonst irgendwo, irgendwann lang vorher. Du kannst sonst anstatt $userstatus auch
                  logged_in() abfragen.

                  Kommentar


                  • #10
                    Danke, super hat geklappt.

                    Zuletzt geändert von analyzer; 04.10.2006, 19:26.

                    Kommentar

                    Lädt...
                    X