Datenbank Problem &Loginscript

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

  • Datenbank Problem &Loginscript

    Ich habe ein problem bei der realisierung eines Loginsystems mittels PHP.

    Ich hab eine Datenbank mit einer Tabelle die User heißt, in dieser Tabelle sind 3 Felder: User, Passwd, Email.

    Jetzt trage ich einen neuen User ein:

    INSERT INTO User(User, Passwd, Email) VALUES('Tim', MD5('test'), 'Tim@test.de);

    So jetzt ist ein User in der Datenbank.

    Wenn ich nun mich als Tim einloggen will, erkennt er den Namen aber nicht das Passwort..

    Also in PHP hab ich dann ein mysql_query befehl z.b mit dem Eintrag:
    $Abfrage = mysql_query(SELECT * FROM User WHERE Passwd = MD5('test');
    Doch er findet damit keinen Eintrag in der Datenbank.

    Auch in MYSQL-FRONT Wenn ich im SQL-Editor z.b:

    SELECT * FROM User WHERE Passwd = MD5('test')

    eingebe findet er auch keinen Eintrag.
    Obwohl er da ist.
    Ich denke es liegt hier dran:
    WHERE Passwd = MD5('test')
    Er kann das irgentwie net vergleichen.

    Ich benutzte MySQl 5.0 bzw. die aktuelle und das aktuelle PHP.
    und einen Apache2 Server.
    Weiß jemand Rat?

  • #2
    testausgaben gemacht???

    poste hier mal
    1) die query
    2) den zugehörigen datensatz der db. (Bitte Copy & Paste aus myAdmin)

    Kommentar


    • #3
      Zuerst mal fehlen in deiner mysql_query-Zeile die Anführungszeichen um die Query und eine schließende Klammer.

      Dann solltest du einen Index über dem Feld user haben und dann so abfragen:
      mysql_query("SELECT * FROM user WHERE user = '$username' AND passwd = MD5('$passwd')");
      Denn beim Einloggen wird der Username doch sicher mit eingegeben oder?

      Und immer schön mysql_error()!

      Kommentar


      • #4
        Tabellen-Kommentar : InnoDB free: 4096 kB

        Feld Typ Null Standard
        Id int(10) Ja NULL
        User varchar(30) Ja NULL
        Passwd varchar(26) Ja NULL
        Email varchar(30) Ja NULL


        Das sind die Felder.Die Tabelle heißt User die Datenbank heißt loginsystem

        Wenn ich einen User adde gehe ich wie folgt vor:

        Query:
        INSERT INTO user(User,Passwd,Email) VALUES ('test', MD5('test'),'test@test.de');

        So jetzt zum einloggen: Das PHP-SCript:

        @$USER =$_REQUEST['txt_login'];
        @$PASSWD =$_REQUEST['txt_pass'];

        $db = new db_ext; //Die Klasse wo die Funktionen drin stehen.

        $db->connect();

        $abfrage = mysql_query ("SELECT * FROM user WHERE user = '$USER'");

        $abfrage2 = mysql_query ("SELECT * FROM User WHERE passwd = MD5('$PASSWD')");

        @$reihen = mysql_num_rows($abfrage);
        @$reihen2 = mysql_num_rows($abfrage2);

        if ($reihen <= 0)
        {
        echo "Unbekannter Benutzername!";

        }
        else
        {

        if($reihen2<=0)
        {
        echo "Falsches Passwort!";



        }
        }

        Kommentar


        • #5
          Huhu? Ignorierst du mich?? Danke!

          Zur Strafe wirst du jetzt als erstes mal die Regel hier befolgen!

          als nächstes befolgst du meine tipps!

          Und danach versuchst du mal die zwei queries zu einem umzuformen.

          Die @s lässt du auch weg. Kommt das vom Perl? Jedenfalls sind sie in PHP überflüssig und können sogar stören (s. Regen).

          Thx!

          Kommentar


          • #6
            Aber er findet ja schon nichts, wenn ich mit MySQL-Front oder sonst irgenteinem Programm eine SQL-Anweisung mache:

            SELECT * FROM User WHERE passwd = MD5('test)

            Und ich 100% sicher bin, dass ein User mit dem Passwort "test" vorhanden ist.
            Doch er findet ihn mit der Anweisung nicht.

            Kommentar


            • #7
              Wenn du jetzt ENDLICH MEINE HINWEISE BEFOLGEN WÜRDEST, dann würdest du auch merken, woran es lieg! Ich hab nämlich schon bemerkt, dass du ein Problem mit deinem Tabellen-Layout hast!

              Los jetzt!

              BTW: Mit "zugehörigen Datensatz" meine ich natürlich den Datensatz, den du erwartest!!!

              Kommentar


              • #8
                Also ich hab es jetzt erstmal zu einer Query umgeformt wie du es gesagt hast:



                So jetzt der nächste Schritt, ich bin leider noch ein blutiger Anfänger, wie du sicherlich schon gemerkt hast.
                PHP-Code:
                $abfrage mysql_query ("SELECT * FROM user WHERE user = '$USER' AND passwd =  MD5('$PASSWD')"); 

                Kommentar


                • #9
                  Ok, dann breche ich diesen Thread an dieser Stelle ab:

                  Wie Lange ist ein MD5-verhashter String? Richtig, 32 Zeichen. Wie viele lässt deine Tabelle zu? Richtig, 26 Zeichen. Schlussfolgerung ist deine!

                  Kommentar


                  • #10
                    Das wusste ich doch nicht, das ein Md5 32 Bit bzw. Zeichen hat..Das hättest du mir auch einfach sagen können.

                    Man lernt halt jeden Tag was neues

                    Vielen Dank.
                    Zuletzt geändert von Colezero; 30.04.2005, 15:27.

                    Kommentar


                    • #11
                      Ja hätte er können, aber du hättest dich genauso gut darüber erkundigen können.

                      du wärst spätestens drauf gekommen, wenn du wie er schon gesagt hat, testausgaben (hash in db, hash des eingegebenen pws) gemacht hättest.
                      MfG
                      aim
                      Lies mich jetzt!
                      - OT-Tags-Liebhaber und BB-Code-Einrücker -

                      Kommentar

                      Lädt...
                      X