Vergleichsoperation bei SELECT

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

  • Vergleichsoperation bei SELECT

    Hallo,

    ich habe mal wieder eine Frage. Wie kann ich vier Felder miteinander vergleichen, wobei je 2 Felder zusammenhängen.
    (Ziel: Eine Login-DB. Einmal für Benutzername und Passwort
    und zweitens Benutzername und masterpasswort)
    Diese Felder sollten nun überprüft werden.

    In etwa so:

    "(SELECT usr FROM user WHERE usr='".addslashes($USR)."' && pwd=PASSWORD('".addslashes($PWD)."') OR usr='".addslashes($USR)."' && masterpwd=PASSWORD('".addslashes($PWD)."')")

    nur leider funzt der Schnipsel nicht.
    Er logged sich zwar ein, aber nur wenn ich benutzername und benutzerpasswd eingebe.
    Wenn masterpwd, dann nicht. WHY???

  • #2
    hmmm,

    ansich sollte er das fressen da && Bindungen stärker sind als || Bindungen, jaja probiere es trotzdem mal mit Klammern um die Paare und wenn das nicht funzt dann lass mal einmal das usr=... weg und mach nur WHERE usr = .... && (pass = ... || pass = master ...)

    Kommentar


    • #3
      Also habe es jetzt mal so probiert:

      ("SELECT usr FROM user WHERE usr='".addslashes($USR)."' && (pwd=PASSWORD('".addslashes($PWD)."') || masterpwd=PASSWORD('".addslashes($PWD)."')) ")

      funzt aber leider immer noch nicht.
      Irgendeine Idee??

      Kommentar


      • #4
        du must die pwd und masterpwd nochmal in eine Klammer fassen, die OR Bedinguns soll ja vor der && Bedingung erfolgen

        Kommentar


        • #5
          Wie jetzt?

          So??

          ("SELECT usr FROM user WHERE usr='".addslashes($USR)."' && ((pwd=PASSWORD('".addslashes($PWD)."') || masterpwd=PASSWORD('".addslashes($PWD)."'))) ")

          Sorry, aber ich bin schwer von Begriff ;-)

          Kommentar


          • #6
            hhmm,

            joo, so hatte ich es mir gedacht.

            Kommentar


            • #7
              Tja, dann muss ich dich leider enttäuschen. Funzt auch nicht. Darum dachte ich auch, das mein Schnipsel mit den extra Klammern falsch war.
              Ich krieg bald die Krise!!

              Kommentar


              • #8
                eigentlich ist ja deine Abfrage insgesammt unsinnig da du usr ausliest aber ja eigentlich schon in der abfrage hast. Das macht irgendwie keinen Sinn oder ?

                Kommentar


                • #9
                  In PHP hat || eine höhere Priorität als && ... traurig aber wahr!

                  http://php3.de/manual/de/language.op...precedence.php

                  im mySQL-Handbuch steht zur Priorität nix, darum sind Klammern wohl nötig

                  http://www.mysql.com/documentation/m...ical_Operators

                  Abär ... aus deiner Query werd ich auch nicht schlau.
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    Ich versuch nochmal genau zu erklären, wo ich hin will...

                    Tabelle in SQL:

                    usr:|pwd: |name: |adresse:|masterpwd:
                    0001|378b243e220ca493|Müller|bla bla |126a648e989cw457

                    So, nun will ich, das man sich mit Benutzername und Passwort einloggen kann. Das funzt ja auch so weit.
                    Aber wenn ich den Benutzernamen(bzw.ID)
                    z.B. 0001 und das masterpasswd eingebe, soll er sich ebenfalls einloggen. Wie lautet die Query dazu.
                    Das muss doch mit || funktionieren oder??

                    Kommentar


                    • #11
                      hmm,

                      SELECT * FROM DB WHERE $ID = 'USR' AND $MASTERPASS = 'masterpwd'

                      nur musst du dir mal überlegen was du dann an die Inputfelder schreibst, es ist doch sinn eines Nicks dass man sich mit ihm einloggt und nicht mit der ID.

                      [Editiert von JoelH am 23-10-2001 um 05:04]

                      Kommentar


                      • #12
                        Ja sicherlich ist es sinnvoll einen Nick zu benutzen. Doch hier wird kein Portal für 'Endbenutzer' programmiert. Hier sind nur Händler angebunden und die haben ja eine sog. Kundennummer.

                        Kommentar


                        • #13
                          BITTE UM HILFE!

                          Keine eine Ahnung, wieso das nicht funzt???

                          Code:
                          SELECT usr FROM user WHERE (pwd=PASSWORD('".$PWD."') || masterpwd=PASSWORD('".$PWD."')) && usr='".$USR."'
                          WER KANN MIR HELFEN!!

                          Kommentar


                          • #14
                            SELECT usr FROM user WHERE (pwd=PASSWORD('".$PWD."') || masterpwd=PASSWORD('".$PWD."')) && usr='".$USR."'
                            Wenn du Strings benutzt dann müssen die in anführungszeichen geschrieben werden, wie du an deinem Query siehst ist dies nicht der Fall bei den Passwörter. Diese müssen auch in Anführungszeichen stehen, oder nicht ? Titus ?

                            Kommentar


                            • #15
                              hmm,

                              kann ich mir nicht vorstellen, da der passwort-schutz ja mit einem normalen passwort und benutzernamen funktioniert. nur wenn ich das masterpasswort eingebe und dann den gleichen benutzernamen funzt es nicht.

                              Kommentar

                              Lädt...
                              X