Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie funktionieren Logins?

Einklappen

Neue Werbung 2019

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

  • Wie funktionieren Logins?

    Hi,

    ich möchte einen Login programmieren. Dazu habe ich meine login.php, die die übermittelten strings mit der Datenbank vergleicht. Aber was tun, wenn die eingaben stimmen?

    Meine login.php sieht im Grunde so aus:

    if (Überprüfung, ob Daten angegeben sind) {
    if (keine Übereinstimmung mit DB) {
    inputs nochmal
    } else {
    Übereinstimmung
    };
    } else {
    inputs
    };

    Wie kann ich jetzt meiner index.php sagen, dass der Login erfolgreich war und vertrauliche Daten (in einer Session) ausgeben? Ich könnte natürlich bei Übereinstimmung in der login.php nochmal ein form mit versteckten inputs ausgeben, aber so nen quatsch will ich nicht(, was wohl verständlich ist oder?).

    Wie macht man denn sowas üblicherweise?

    Danke im Voraus,
    Paeisi


  • #2
    Du suchst dir Daten des Nutzers zusammen, z.B. IP, UserAgent, etc. und speicherst sie in der Session. Dann kannst du in der index.php überprüfen ob diese Daten in der Session gesetzt sind, wenn ja ist derjenige angemeldet ansonsten eben nicht.

    Kommentar


    • #3
      Kann ich denn die Session schon in der login.php starten?

      Wie ich es auf Sessions (PHP-Tutorial) verstanden habe, darf "<?php session_start(); ?>" nur als allererstes einer PHP-Datei stehen
      <!-- Keine Kommentare, Leerzeilen oder Leerzeichen - irgendwas - vor dem PHP-Block mit session_start. -->
      , was ich ja in der login.php nicht machen kann, da ich ja keine Session starte, ohne, dass der User überhaupt eingeloggt ist.

      Kann ich denn im if eine Session starten? Und wenn ja, leite ich dann mit header() weiter, in dessen Location die SID an die URL gehängt ist?

      Kommentar


      • #4
        Auf jeder Seite die nur für authetifizierte Benutzer ist machst du oben direkt nach dem PHP-Tag session_start();
        Weiterleiten muss du da nichts
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          Das heißt, dass in meinem Fall die Session gestartet wird, bevor ich eingeloggt bin. Habe ich das richtig verstanden?

          Apropos: Wie beende ich eine Session nach x Minuten?

          Kommentar


          • #6
            1. Ja.
            2. In der Ini gibts eine Einstellung: session.gc_maxlifetime.
            Wenn du dann nur inaktive Session entfernen möchtest kannst du dir noch die Funktion session_regenerate_id() anschauen.

            Ansonsten PHP: PHP Manual - Manual hilft!
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              Ist das nicht erstaunlich? Jeder Anfänger will unbedingt ein Login-Script schreiben und stellt dann Fragen zu diesem Thema. Wieso? In jedem Forum gibt es eine Suchfunktion, google liefert tonnenweise Infos! Ist das eigentlich zuviel verlangt, wenn man sich selber um Lösungen bemüht?!?!?! Es gibt kein Login-Problem, dass nicht schon endlos oft besprochen wurde!!!

              Kommentar


              • #8
                Amen.
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  So sieht momentan der Schnipsel aus, der mich eigentlich zur index.php leiten soll:

                  PHP-Code:
                  else {

                  $_SESSION['ip'] = $_POST['ip'];
                  header('Location: http://sd.tld.com/club/index.php?=SID');
                  }; 
                  Wieso geht das nicht?

                  Kommentar


                  • #10
                    Fehlermeldung?
                    Das ";" am Ende ist zu viel
                    ACHTUNG!!! SIGNATUR!!!
                    PHP-Code:
                    var_dump($gehirn); exit; 
                    0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

                    Kommentar


                    • #11
                      Nein, bekomme keine Fehlermeldung. Habe nach dem header mal echo 'Hallo Welt!'; geschrieben, das ich auch zu sehen bekomme -> keine Weiterleitung.

                      Welches ";" meinst Du? Das allerletzte nach der geschweiften Klammer? Das beendet doch die if-Abfrage oder nicht?

                      Kommentar


                      • #12
                        folgender ablauf des logins

                        usereingaben werden in variablen gespeichert(mysql_real_escape_string auf den usernamen anwenden, md5 am pw anwenden).

                        usereingaben mit datenbank prüfen, stimmen die daten, dann session_id regenerieren und die session_id in eine spalte in der datenbank eintragen.

                        wenn die daten nicht stimmen, dann fehlermeldung.

                        vor aufruf jeder seite user id aus der datenbank auslesen, wenn session id aus der datenbank mit der session id aus dem script übereinstimmen, dann speichere die user id in eine session variable, sonst zeige meldung dass der benutzer nicht eingeloggt ist
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                        Kommentar


                        • #13
                          Zitat von Paeisi Beitrag anzeigen
                          Welches ";" meinst Du? Das allerletzte nach der geschweiften Klammer? Das beendet doch die if-Abfrage oder nicht?
                          also wenn du solche fragen stellst, dann musst du noch etwas lernen nach if, switch und weitere kommt kein ; hin. einfach merken dass hinter geschweiften klammern nie ein ; hinkommt
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                          Kommentar


                          • #14
                            Oje oje, da hab ich wohl was falsches gelernt.

                            Also...

                            Was bedeutet session_id REgenerieren?

                            Warum muss ich die session_id in die Datenbank schreiben und wo? Zum Beispiel in einer Spalte bei sonstigen persönlichen Angaben?

                            Was meinst Du mit userid? den Usernamen oder die die "Zahl-id"?

                            Den letzten Absatz deines vorletzten Posts verstehe ich leider garnicht. Habe sowas noch nie gemacht

                            Kommentar


                            • #15
                              Blablabla.

                              Das hier kann doch nicht stimmen:
                              PHP-Code:
                              $_SESSION['ip'] = $_POST['ip'];
                              header('Location: http://sd.tld.com/club/index.php?=SID'); 
                              Wie wäre es, wenn du dich erstmal mit den PHP Grundlagen beschäftigst, bevor du ein Login System (etwas was mit Sicherheit zu tun hat!!) programmierst?

                              Kommentar

                              Lädt...
                              X