Login- DB Einträge vergleichen

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

  • Login- DB Einträge vergleichen

    Hallo Leute,

    ich bastel gerade eine einem Loginsystem mit Registrierung und denke über folgendes nach. Wenn Ein username ja sowieso eindeutig sein muss (nur einmal vorkommen darf) dann kann ich den doch auch als Primary KEy nehmen oder? Und dann wollte ich noch Fragen:
    Bei der Verarbeitung des Anmeldeformulars lese ich momentan alle Namen, Nachnamen, Usernamen und EMail adressen aus und vergleiche diese mit der Eingabeim Formular.. ist das sinnvoll? Ich meine, es sollte sich ja nicht jeder mit einer E-Mailadresse oder mit dem gleichen Vor-und Nachnamen undvor allem nicht mit dem gleichen Usernamen mehrmals registrieren.. oder sehe ich das falsch? Ich würde gernem al hören wie ihrdas machen würdet... bzw. was da sinnvoll ist.
    -Am Anfang war das Wort-

    Ich habe fertig mit Abi ^^

  • #2
    Wenn du die Logindaten aus dem Anmeldeformular in der Hand hast, dann genügt

    SELECT <die gewünschten Spalten> FROM tabelle
    WHERE <Spalte Benutzername>='<Benutzername aus Formular>
    AND <Spalte Passwort>=<Crypt-Funktion>(<Passwort aus Formular>)

    wobei Crypt-Funktion natürlich deiner Verschlüsselung entsprechen muß (MD5, PASSWORD, ...).

    Du brauchst hierbei auch kein "LIMIT 1" benutzen, weil diese Abfrage immer maximal einen Datensatz liefert, wenn du das durch die Einzigartigkeit des Benutzernamens oder der Kombination aus Benutzernamen und Passwort sicherstellst.

    Kommentar


    • #3
      Also okay, ich suche die Benutzernamen raus, die mit dem eingegebenen Benutzernamen identisch sind, das ist klaro, aber warum sollte ich die auslesen, die das gleiche Passwort haben??? ZWei Benutzer können doch durchaus das gleiche Passort haben, odeR?

      Ich finde z.B. viel wichtiger, dass man sich nur 1 mal mit einer E-mail Adresse anmelden kann, oder?
      -Am Anfang war das Wort-

      Ich habe fertig mit Abi ^^

      Kommentar


      • #4
        Original geschrieben von Lexus_Ks
        Also okay, ich suche die Benutzernamen raus, ...
        den Benutzernamen, denn es gibt nur einen. Benutzernamen sind eindeutig oder?
        aber warum sollte ich die auslesen, die das gleiche Passwort haben??? ZWei Benutzer können doch durchaus das gleiche Passort haben, odeR?
        Du liest den Datensatz, wo beides, Name und Passwort stimmen. Wenn du das Passwort nicht mit prüfst, kann ich mich als jeder x-beliebige User anmelden, wenn ich dessen Namen nur mal irgendwo gelesen habe. Das kannst du nicht wollen!
        Ich finde z.B. viel wichtiger, dass man sich nur 1 mal mit einer E-mail Adresse anmelden kann, oder? [/B]
        Deine Entscheidung, prinzipiell aber eine gute Idee. Spielt beim Anmelden aber nur dann eine Rolle, wenn man im Anmeldeformular auch seine Mailadresse eintippen muß. Das wäre überflüssig, denn Name und Passwort identifizieren einen User bereits eindeutig.

        Kommentar


        • #5
          Huch.. ich glaube das ist falsch rübergekommen... es geht hier um die registrierung ... lol.. sorry für meinen falschen Ausruck.
          -Am Anfang war das Wort-

          Ich habe fertig mit Abi ^^

          Kommentar


          • #6
            Hm, das hätte dir schon einfallen könne, als ich mit SELECT anfing.

            Was willst du denn jetzt, wo ist das Problem? Eindeutigkeit erreichst du durch UNIQUEness der entsprechenden Spalten. Ein Primärschlüssel ist immer eindeutig.
            Formulardaten per UPDATE eintragen, wenn es fehlschlägt mit "SELECT ... WHERE ..." eine Kriterium nach dem anderen testen, bis du das gefunden hast, was schon vorhanden ist. Entsprechende Fehlermeldung ausgeben. Fertig.

            Kommentar


            • #7
              Ja ^^ Also meine Frage ist erstens, wie sinnvoll es ist ín der Usertabelle den Username als Primary Key zunehmen (anstatt einer ID) und meine Zweite ist, was man noch als eindeutiges Kriterium nutzen sollte (sprich was nur bei einem User vorkommen darf).
              -Am Anfang war das Wort-

              Ich habe fertig mit Abi ^^

              Kommentar


              • #8
                Benutzernamen sind Namen und nicht nur auto_increment-Werte, weil man sie - und sei es nur im Admin-Bereich - anzeigt. Identische Namen werden da zum Problem.
                Also halten wir fest: Wenn Namen benutzt werden, dann bitte eindeutige.

                Passwörter müssen nicht eindeutig sein, da sie nur in Kombination mit dem Namen geprüft werden und der bereits eindeutig ist.

                Mailadressen sollten je nach Konzept eindeutig sein oder nicht. Wenn du zuläßt, dass sich ein Mensch mehrere Accounts anlegt, dann gestatte ihm, diese alle über die selbe Mailadresse laufen zu lassen.
                Möchtest du das nicht, kannst du Mehrfachaccounts auch nicht verhindern, aber der Mensch braucht dann soviele Mailadressen wie er Accounts haben will.


                So und nun überlege dir einfach mal, was du brauchst, was du bieten möchtest und was dafür nötig ist. Meine Erklärungen sind nämlich nur allgemeiner Natur, je nach Konzept völlig unpassend.

                Kommentar


                • #9
                  Ich kapiere dass mit den ' den " und den \ noch nicht so richtig, warum ist das hier jetzt falsch???

                  $user_equal="SELECT
                  username
                  FROM
                  users
                  WHERE
                  username = '$_POST['username']' "
                  -Am Anfang war das Wort-

                  Ich habe fertig mit Abi ^^

                  Kommentar


                  • #10
                    Wer sagt, dass das falsch ist? Und was sagt er? Dass ein Semikolon fehlt?

                    http://www.php-resource.de/forum/sho...threadid=58111

                    Wenn du PHP-Code postest, nutz auch mal die entsprechenden Tags des Forum!

                    Kommentar


                    • #11
                      Die Fehlermeldung sagt das ^^ Also ich habs rausgefunden. Um die ganzen Befehle mache ich keine " " sonder nur ' ' und um den key vom array mache ich keine ' ' sondern gar nicts... Ich habe aber leider nicht verstanden warum das so ist.

                      Joa das mit dem Semikolon ist AUCH richtig.
                      -Am Anfang war das Wort-

                      Ich habe fertig mit Abi ^^

                      Kommentar


                      • #12
                        WAS ist die Fehlermeldung???

                        Lies auch mal den Link!

                        Und unsere Regeln: http://www.php-resource.de/forum/sho...threadid=50454

                        Kommentar


                        • #13
                          Zu Fehlermeldung muss ich wieder erklären..... ich habe in meinem Quellcode diese Variable
                          PHP-Code:
                          $user_equal="SELECT
                                  username 
                                   FROM 
                                  users
                                   WHERE 
                                  username = 
                          $_POST[username]"
                          und weiter unten habe ich dann dieses Query
                          PHP-Code:
                          $result_user_equal mysql_query($user_equal) OR die(mysql_error()); 
                          und diese Abfrage
                          PHP-Code:
                          if(mysql_fetch_assoc($result_user_equal))
                              {
                              die(
                          "Der Username ist leider schon vergeben.<br/>\n
                                       Bitte wählen Sie einen anderen Username.\n"
                          );
                              } 
                          Vielleicht habe ich da vollkommenen Quatsch geschrieben, aber ich musste ja irgendwas ausprobieren. Also habe ich in der Tabelle Users schon mal einen Datensatz angelegt in dem der Username "Lexus_Ks" ist um jetzt testen zu können, was passiert wenn ich versuche mich mit dem gleichen Username anzumelden.... Wenn ich das versuche kommt folgende Fehlermeldung:

                          Unknown column 'Lexus_ks' in 'where clause'

                          Aber warum verstehe ich nicht. wenn durch mysql_fetch_assoc einer ressource id welche leer ist ein false kommt, dann müsste doch bei einer besetzten Ressource ID das Gegenteil passieren, oder? Und WENN die Ressource ID Belegt ist, dann steht doch fest, dass der Benutzername schon mal vorhanden ist, weil er ja nur dann rausgesucht wird (durch meine WHERE Bedingung) Also müsste dann der IF Teil abgearbeitet werden -______________-
                          Zuletzt geändert von Lexus_Ks; 07.06.2006, 20:47.
                          -Am Anfang war das Wort-

                          Ich habe fertig mit Abi ^^

                          Kommentar


                          • #14
                            Habe es jetzt nochmal anstatt mit mysql_fetch_assoc() mit mysql_num_rows() versucht...also dass er den "die"-Teil abarbeitet, wenn eine Zeile ausgelesen wurde (was ja nur der Fall ist wenn der USername schon mal vorhanden ist). Da kommt die gleiche Fehlermeldung.

                            Habe jetzt rausgefunden, dass das bedeutet, dass es die Spalte 'Lexus_Ks' nicht gibt.... aber das habe ich auch nicht geschrieben, odeR? Ich habe doch geschrieben, dass er einen Datensatz raussuchen soll, WENN EIN WERT der Spalte genauso ist wie der eingegebene Name (in diesem Fall Lexus_ks)

                            Wird vielleicht bei
                            PHP-Code:
                            $bla='....
                            WHERE
                              username = $_POST[username]'

                            das erste username schon aus dem $_POST gezogen (dementsprechend würde ja dann da stehen "WHERE Lexus_Ks = Lexus_KS" und die Spalte Lexus_Ks gibts natürlich nicht .... !?
                            Zuletzt geändert von Lexus_Ks; 07.06.2006, 21:22.
                            -Am Anfang war das Wort-

                            Ich habe fertig mit Abi ^^

                            Kommentar


                            • #15
                              Du weißt schon, dass Strings (also z.B. dein Username) in Anführungszeichen (gerne auch einfache) gehören.

                              Ich hab jetzt nicht alles gelesen.

                              Aber du hast offensichtlich meine Links auch noch nicht so wirklich gelesen und befolgt.

                              Kommentar

                              Lädt...
                              X