Ankündigung

Einklappen
Keine Ankündigung bisher.

Login Script -> Wie oft eingeloggt?

Einklappen

Neue Werbung 2019

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

  • Login Script -> Wie oft eingeloggt?

    Hallo

    Ich habe ein Login Script. Dazu finde ich nichts in Google oder sonstige Foren.
    Nun möchte ich ne kleine Tabelle machen wo steht wie oft sich ein User eingeloggt hat.

    Die Tabellen Namen:
    -username
    -logincount
    -passwort

    Hier Login Code:

    PHP-Code:
    <?php
    $dbHost 
    "localhost";
    $dbUser "xxxx";
    $dbPass "xxxx";
    $dbName "xxxx";
    $connect = @mysql_connect($dbHost$dbUser$dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
    $selectDB = @mysql_select_db($dbName$connect) or die("Konnte die Datenbank <b>$dbName</b> nicht auswählen!");

    $username $_POST["username"];
    $passwort md5($_POST["password"]);

    $abfrage "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    if(
    $row->passwort == $passwort)
        {
        
    $_SESSION["username"] = $username;
        echo 
    "Willkommen <b>$username</b>, dein Login war erfolgreich.";
        echo 
    "<br />Du kannst jetzt auf alle Seiten zugreifen.<br /><br />";
        
        }
    else
        {
        echo 
    "Benutzername und/oder Passwort waren falsch. <a href=\"/login.php\">Login</a>";
        }

    ?>
    Wie muss ich danun ändern, oder was hinzu fügen damit in der Datenbank ein Wert immer
    einen höher gezählt wird?

  • #2
    Hallo,
    erstmal SQL-Injection-Gefahr.
    Warum nimmst du "username LIKE " und nicht "username=" ?

    Wie muss ich danun ändern, oder was hinzu fügen damit in der Datenbank ein Wert immer
    einen höher gezählt wird?
    1. Meinst du eine Auto-Increasement-Spalte ?

    2. Nachher einfach mit einem
    Code:
    UPDATE login SET anzahl_eingeloggt = anzahl_eingeloggt + 1 WHERE username = ''
    den Wert erhöhen.

    Grüße
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Nimm statt dem LIKE den Gleichheits-Operator. LIKE brauchst Du nur, wenn Du, wie der Name impliziert, einen ähnlichen String vergleichen willst.

      Kommentar


      • #4
        ...und warum benutzt Du das @ Zeichen? Nimm das mal raus, sonst unterdrückst Du mögliche Fehler, die Dir momentan noch nicht auffallen.

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          @Wolf29
          Danke für den Tipp. Ich habe das über einen Generator gemacht, darum ist das automatisch mit drinne.

          @ByStones & @xm22
          Danke für den Tipp mit LIKE. Habs geändert.

          ------
          So wie ich es verstanden habe, habe ich das nun mal gemacht, klappt aber ,wie es auch sein soll beim Anfänger,
          nicht. Hier ist das was ich zusammen gecodet habe:

          PHP-Code:
          # Log Counter

          $username $_POST["username"];
          $countlog $_POST["countlog"];

          $count "UPDATE logcount SET countlog = countlog + 1 WHERE username = ''";
          $answer mysql_query($count);
          $row mysql_fetch_object($answer);

          if(
          $row->username == $username)
              {
              
          $_SESSION["username"] = $username;
              echo 
          "Du hast dich bereits ".$countlog." eingeloggt. ";
              echo 
          "<br />Du kannst jetzt auf alle Seiten zugreifen.<br /><br />";
              
              } 
          Folgende Fehlermeldung kommt raus:
          Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /users/....
          Ist das überhaupt richtig so?

          Kommentar


          • #6
            Schau mal hier, wie du mit mysql_fetch_object überhaupt korrekt arbeitest:

            PHP: mysql_fetch_object - Manual

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              PHP-Code:
              $count "UPDATE logcount SET countlog = countlog + 1 WHERE username = '"$hierDenUsernamenHin."'"
              Ich weiß nicht wie deine logcount-Tabelle aussieht, aber theoretisch könnte es dann so funktionieren.
              Ein UPDATE-Statement gibt keinen Datensatz zurück, das musste du extra holen.

              Ähm die Reihenfolge in der du das machen solltest:

              1. Einhaben einholen
              2. Nachsehen ob der Login korrekt war
              2a. Wenn ja, dann Anzahl von Logins +1 und in SESSION die Werte ablegen, weiterleiten
              2b. Wenn nein, Fehler ausgeben und das Formular anzeigen
              Signatur:
              PHP-Code:
              $s '0048656c6c6f20576f726c64';
              while(
              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

              Kommentar


              • #8
                PHP-Code:
                $username mysql_real_escape_string($_POST['username']);

                //gemischte SQL anweisung.
                $sql sprintf("UPDATE users 
                SET countlog = countlog+1
                WHERE id = (SELECT id 
                                 FROM users 
                                 WHERE username = '%s') "
                ,
                $username);
                //SQL anweisung ausführen
                mysql_query($sql) or die(mysql_error());


                //Sql anweisung um alle daten , die zu dem benutzer gehören, auszulesen
                $sql mysql_query(sprintf("SELECT username,countlog FROM users WHERE username = '%s'",$username)) or die(mysql_error());
                while(
                $row mysql_fetch_object($sql)){
                //ausgabe
                 
                echo "Hallo ".$row->username." du hast dich bereits ".$row->countlog." eingelogt";

                natürlich muss diese prozedur nach einem erfolgreichen login, erfolgen.
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                Kommentar


                • #9
                  warum überhaupt eine separate Tabelle? Mach doch ne Spalte anzahl_logins in die Usertabelle rein.
                  [PHP]if ($var != 0) {
                  $var = 0;
                  }[/PHP]

                  Kommentar


                  • #10
                    warum überhaupt eine separate Tabelle? Mach doch ne Spalte anzahl_logins in die Usertabelle rein.
                    genau, und der proffesionalitäts habler einfach noch eine spalte mit last_login ... wenn wir gleich bei deinem login sind ... und evtl. die anzahl der fehlgeschlagenen logins, wenn die > 5 dann kann man sich z.b. 5 min net einloggen, wenn danach noch immer unkorrektes passwort dann 10 min und dann sperre ... nur so nebenbei ^^
                    PHP-Code:
                    if ( $humans >= ) {
                       
                    war ();

                    Kommentar


                    • #11
                      PHP-Code:
                      sprintf("SELECT username,countlog FROM users WHERE username = '%s'",$username 
                      Warum benutzt Ihr sprintf ? Welchen Vorteil hat das, denn die Parameter werden ja nicht escaped, oder ?

                      Grüße
                      Signatur:
                      PHP-Code:
                      $s '0048656c6c6f20576f726c64';
                      while(
                      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                      Kommentar


                      • #12
                        schau dir die erste zeile an $username = mysql_real_escape_string($_POST["username"]); also wird $username escaped
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          Zitat von BlackScorp Beitrag anzeigen
                          schau dir die erste zeile an $username = mysql_real_escape_string($_POST["username"]); also wird $username escaped
                          Das ist sinnbefreit. Wenn du $username im Script weiterbenutzt, dann hast du den zermatschten String. Richtig ist z.B:

                          PHP-Code:
                          $erg sprintf("SELECT username,countlog FROM users WHERE username = '%s'",mysql_real_escape_string($username); 
                          oder

                          PHP-Code:
                          $erg "SELECT username,countlog FROM users WHERE username = '"  mysql_real_escape_string($username) . "'"
                          oder gleich so:

                          PHP-Code:
                          $erg "SELECT
                                      username,
                                      countlog 
                                  FROM 
                                      users 
                                  WHERE 
                                      username = '"  
                          mysql_real_escape_string($username) . "'"
                          [PHP]if ($var != 0) {
                          $var = 0;
                          }[/PHP]

                          Kommentar


                          • #14
                            ja das stimmt schon.. habe nicht drauf geachtet.. aber die problemstellung bezog sich ja nicht auf das richtige escapen. sondern um zu verstehen dass man entweder bestimmte datensätze aus der datenbank ausliest oder in die datenbank einträgt. also benötigt man 2 querys, mit einer kommt man da nicht weiter, und dass Update query eigentlich nichts zurückgibt außer höchstens ob die query erfolgreich ausgeführt wurde...
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                            Kommentar

                            Lädt...
                            X