Usermanagement

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

  • #46
    count macht meiner Ansicht nach überhaupt keinen Sinn.

    nun zum Grund:

    Ist-Zustand:
    - Usertabelle mit 20 User (d.h. ein Username steht im direkten Bezug zu seinem Passwort)

    Soll-Zustand:
    - Ermitteln ob die eingegebenen Formulardaten Username + Passwort übereinstimmen, d.h. nur beides zusammen

    Zum technischen:
    $result=@mysql_query("Select * from Usertable where username='$username' and pass='$pass'");

    Zur Logik die Tatsache das Username und Passwort nur einmal vorkommen können und sollen! Lässt ein count(); sinnlos bis gar blödsinnig erscheinen. Da von deiner angegebenen Query nur die Anzahl der Zutreffungen ermittelt wird! Zum ausgeben von Userdaten wäre aber nochmal eine Query nötig.

    Sollte die Abfrage nicht funktionieren, da der Datensatz nicht vorhanden ist könnte man die mit or die(); verknüpfen um das Skript zu stoppen!

    Oder aber man überprüft ob $result = 0 ist. Da Mysql Functions eigentlich immer 0 zurückgeben wenn es net klappt. Kannst das aber noch genau nachlesen.

    Ich würde dir raten in Zukunft:

    1.) Schritt für Schritt vorzugehen und entsprechende Kenntnisse zu verschaffen

    2.) Logisch an die Sache rangehen ohne mit Vermutungen und Annahmen herumzumanövrieren.

    3.) Eigeniniative zeigen bzw. den Willen und die Möglichkeiten die die Skriptsprache PHP bietet herauszufinden.

    4.) Verstehen warum der Haxe und Happy genervt sind!

    Also Mut zur Selbsthilfe
    Zuletzt geändert von Payne_of_Death; 31.05.2003, 15:19.
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #47
      Na also, du bist doch auch meiner Meinung, dass Count völlig blödsinnig und sinnlos ist und das meine ich doch, dass ich das nicht kapiere was das Count soll ...

      Kommentar


      • #48
        Abbraxe oder Happy spekulieren aus irgendeinem Grund auf was gefunden 1 oder nicht gefunden auf 0.

        Wäre zwar auch ne Möglichkeit aber es gibt ja immer mehrere Wege.
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #49
          Ja ich verstehe schon, wenn $result == 0 ist dann isses ebenfalls falsch und meine Möglichkeit ist doch eigentlich nicht unkorrekt ...

          Kommentar


          • #50
            Original geschrieben von jOhnny knOx
            Ja ich verstehe schon, wenn $result == 0 ist dann isses ebenfalls falsch und meine Möglichkeit ist doch eigentlich nicht unkorrekt ...
            Wobei

            1.) der Hinweis auf ein doppeltes where berechtigt ist
            2.) Du ohne abzufragen ob $result überhaupt was gefunden wurde, gleich eine While(); anführst.
            3.) fehlt ein @ bei mysql_query sonst wirst du immer einen Fehler bekommen wenn nichts gefunden wurde. -> wirst das aber bestimmt noch machen.
            4.) ist zwar richtig wie du dir das gedacht hast, aber eine Funktion wäre meines erachtens beseer, da du bei entsprechendem Wert entweder eine Var gloabal deklarierst wo dein Fehlercode in der funktion zurücklieferst.
            Dann könntest du eine Form anzeigen mit dem Fehlercode, d.h. ich habs so gemacht das ne form kommt bei einem Fehler: Sorry gib einen Usernamen ein. -> ist aber nur eine form die je nachdem was zurückgibt. Und das kommt an der Stelle wo der Fehler tatsächlich auch vorkommt.
            5.) habe ich mich noch einer regex bedient um einen gewissen Standard an Usernamen zu wahren bei Neuanmeldungen
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #51
              @johnny: soweit ich gelesen habe ist deine idee nicht falsch. da kann man detailierte aussagen machen:

              select username, password FROM x where username = $username LIMIT 0,1

              if(numrows = 0) // falscher username

              elseif(pass1 = pass2) // passwort ist falsch

              else // eingeloggt

              Kommentar


              • #52
                3.) fehlt ein @ bei mysql_query sonst wirst du immer einen Fehler bekommen wenn nichts gefunden wurde.
                nicht wirklich, odeR?

                Kommentar


                • #53
                  Das @ vor dem mysql_query ist doch eigentlich nur da um die Fehler zu unterdrücken bzw. sie nicht anzeigen zu lassen.

                  Kommentar


                  • #54
                    jo, das wollte POD auch sagen. Aber ich bin der Meinung, dass es keine Probleme gibt, wenn du 0 Results bekommst.

                    Kommentar


                    • #55
                      Ich habe nun mal die Variable $user[name] zum Test bei der Fehlermeldung rangehängt. Diese hat aber keinen Inhalt, was daran liegt dass, das Query wahrscheinlich falsch ist. Mir geht es ja im Grunde nicht darum, ob ich nun result == "0" oder $username == "" mache, sondern darum, dass es funktioniert den Login erfolgreich durchzuführen. Bei dem while ...

                      PHP-Code:
                      while ($user mysql_fetch_array($result)) { $user[name] = $user[nickname]; $user[pass] = $user[password]; } 
                      ... wird $user[name] garnicht definiert, genauso ist es dann verständlich auch bei dem $user[password].

                      Also im Klartext: Es geht mir nur darum, dass er meinen Wünschen nachgeht und im Query das korrekte und die Übereinstimmung macht/überprüft. Dass es zum erfolgreichen Login kommt bessergesagt.

                      PHP-Code:
                      $result mysql_query("SELECT nickname, password FROM $user_tname WHERE nickname='$username' AND password='$password'"); 
                      Wie könnte ich das Query umändern, oder was könnte ich sonst machen ?

                      Kommentar


                      • #56
                        dann mach einfach

                        COUNT(*)
                        FROM x
                        WHERE nickname = '$nickname'
                        AND password = '$password'

                        und dann brauchst du nur zu checken, ob 0 oder 1

                        Kommentar


                        • #57
                          Okay, habs nun endlich mit ...

                          PHP-Code:
                                  if ($login) {

                                  
                          $result mysql_query("SELECT COUNT(*) as nums FROM $user_tname WHERE nickname='$username'");
                                   
                          $cache mysql_fetch_array($result);
                                   
                          $num_rows $cache[nums];

                                  
                          $result2 mysql_query("SELECT COUNT(*) as nums FROM $user_tname WHERE password='$password'");
                                   
                          $cache2 mysql_fetch_array($result2);
                                   
                          $num_rows2 $cache2[nums];

                                  if (
                          $username == "") {

                                  echo 
                          "<table width='100%' border='0' cellspacing='4' cellpadding='0'>
                                    <tr><td><div align='center'><b>Der Login war nicht erfolgreich</b></div></td></tr>
                                    <tr><td><div align='center'>Bitte gebe deinen Benutzernamen an.</div>
                                  </td></tr></table>"
                          ; }

                                  elseif (
                          $password == "") {

                                  echo 
                          "<table width='100%' border='0' cellspacing='4' cellpadding='0'>
                                    <tr><td><div align='center'><b>Der Login war nicht erfolgreich</b></div></td></tr>
                                    <tr><td><div align='center'>Bitte gebe dein Passwort an.</div>
                                  </td></tr></table>"
                          ; }

                                  elseif (
                          $num_rows == "0") {

                                  echo 
                          "<table width='100%' border='0' cellspacing='4' cellpadding='0'>
                                    <tr><td><div align='center'><b>Der Login war nicht erfolgreich</b></div></td></tr>
                                    <tr><td><div align='center'>Bitte gebe einen gültigen Benutzernamen an.</div>
                                  </td></tr></table>"
                          ; }

                                  elseif (
                          $num_rows2 == "0") {

                                  echo 
                          "<table width='100%' border='0' cellspacing='4' cellpadding='0'>
                                    <tr><td><div align='center'><b>Der Login war nicht erfolgreich</b></div></td></tr>
                                    <tr><td><div align='center'>Bitte gebe das korrekte Passwort an.</div>
                                  </td></tr></table>"
                          ; }

                                  else {

                                    echo 
                          "<table width='100%' border='0' cellspacing='4' cellpadding='0'>
                                    <tr><td><div align='center'><b>Der Login war erfolgreich</b></div></td></tr>
                                    <tr><td><div align='center'>Du wirst in wenigen Sekunden zu deinem Profil weitergeleitet.</div>
                                  </td></tr></table>"
                          ;

                                  }
                              
                                  } else { 

                          [...] 
                          ... geschafft. Jetzt muss ich nur noch den Login durchführen.
                          Zuletzt geändert von jOhnny knOx; 31.05.2003, 20:04.

                          Kommentar


                          • #58
                            wenn ich jetzt username3 eingeben und das passwort von user 2, finden deine beiden select-statements was und ich bin deiner meinung nach eingeloggt oder seh ich das falsch?

                            wenn ich das richtig seh (und davongeh ich einfach mal aus), is das system voll für'n arsch
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #59
                              Du meinst er vergleicht einen gültigen Benutzernamen mit IRGENDEINEM gültigem Password ?

                              EDIT:

                              Mit ...

                              PHP-Code:
                              $result mysql_query("SELECT COUNT(*) as nums FROM $user_tname WHERE nickname='$username' AND password='$password'");
                              $cache mysql_fetch_array($result);
                              $num_rows $cache[nums]; 
                              geht es aber.

                              Zuletzt geändert von jOhnny knOx; 01.06.2003, 09:51.

                              Kommentar


                              • #60
                                ja, mit deinem edit geht's aber, es reicth dann sogar, wenn du einfach nur $num_rows prüfst anstatt deiner vier if-bedingungen
                                Ich denke, also bin ich. - Einige sind trotzdem...

                                Kommentar

                                Lädt...
                                X