such-funktion

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • such-funktion

    Hallo!

    Ich bastle mir gerade ein kleines Login Script in PHP.

    Über ein Formular wird Username und Passwort abgefragt. Dann wird mit der MySQL- Datenbank verglichen, ob der Username existiert.

    SELECT * FROM user WHERE username='$form_user';

    Wenn nun eine Übereinstimmung gefunden wurde, soll weitergearbeitet werden, ansonsten eine Fehlermeldung ausgegeben werden:



    PHP Code:
    foreach($bla as $user) {
      if(isset(
    $user)) echo "Array existiert (weiter)"
      else echo 
    "Array existiert nicht (Fehlermeldung)"
    Wenn ich nach einem vorhandenen Datensatz suche, dann erscheint auch "Array existiert". Wenn ich aber nach einem nicht vorhandenen Datensatz suche, erscheint nichts. Das Array existiert also nicht, aber irgendwie auch nicht nicht (sonst würde else- Teil ausgeführt werden). Es ist aber auch nicht leer (habe ich mittels empty() überprüft). Was ist es also dann? Und wie kann ich unterscheiden, ob der Username in der Datenbank ist oder nicht=

    Edit: Eins noch: MySQL Manual gelesen, gegooglet und viiiel selbst probiert. Nicht dass mir einer vorwirft ich soll doch erstmal suchen,
    Last edited by koschda; 21-08-2005, 20:21.

  • #2
    hä?
    du machst
    PHP Code:
    $result mysql_query('SELECT id
    FROM users
    WHERE username = "' 
    mysq_real_escape_string($_POST['username'], $con_id) . '"
    AND password = "' 
    mysql_real_escape_string($_POST['password'], $con_id) . '"
    LIMIT 0, 1'
    $con_id);

    if (
    mysql_num_rows($result) == 0)
     echo 
    'kein User vorhanden';
    else
     echo 
    'user vorhanden'
    und fertig *zuck*, nix foreach

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Comment


    • #3
      Moin Koschda

      Hatte mal so etwas ähnliches.. und das wurde mit folgenden Zeilen gelöst:
      PHP Code:
      <?
      $query = "SELECT * FROM `tbl_users` ORDER BY 'name', 'id'";
          $result = mysql_query($query);
          while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
              {
                   if ($user == $row{'user'}) {
                                                          if($pw == $row{'pw'}){
                                                          echo "Angaben sind korrekt";
                                                          } else {
                                                          echo "Falsches Passwort";
                                                          }
                      } else {
                                 echo "user unkbekannt";
                      }
      ?>
      Hoffe das Hilft
      Gruss
      Arjuna
      C = Constant
      A = And
      N = Neverending
      I = Improvement

      Comment


      • #4
        AAAAH entschuldigt bitte..

        Ich hab wohl viel zu beschränkt gedacht.

        Comment


        • #5
          PHP Code:
          <?
          $query = "SELECT * FROM `tbl_users` ORDER BY 'name', 'id'";
              $result = mysql_query($query);
              while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
                  {
                       if ($user == $row{'user'}) {
                                                              if($pw == $row{'pw'}){
                                                              echo "Angaben sind korrekt";
                                                              } else {
                                                              echo "Falsches Passwort";
                                                              }
                          } else {
                                     echo "user unkbekannt";
                          }
          ?>
          yep, es hilft Hackern rauszufinden ob ein Username existiert und macht nebenbei PHP und MySQL langsam
          Meine Methode ist mit nem Index auf username wesentlich schneller!
          Weil nicht alles von MySQL zuerst zu PHP getragen werden muss um es dort auszusortieren, das kann (vor allem bei einem externen MySQL-Server) sehr langsam enden!



          @koschda
          brich die lange Zeile in deinem Post um...kein horizontales Scrolling auf 1024!

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Comment


          • #6
            @ghostgambler: Das war nur zu anschauungszwecken.

            IMPORTANT: --> Wer nicht will das es nicht angezeigt wird, kann die ECHO's einfach löschen oder auskommentieren...

            Danke dir, hab grad ne sicherheitslücke bei mir selbst entdeckt. Ich hab erwartet das das Erkannt wird, wie du es auch hast.

            "macht nebenbei PHP und MySQL langsam"...
            Ok das war mir ned bekannt, werde mir deine Methode fürs nächste mal merken.
            Last edited by Arjuna; 21-08-2005, 21:03.
            C = Constant
            A = And
            N = Neverending
            I = Improvement

            Comment


            • #7
              wieso nur fürs nächste mal?? die aufgabe bei der webpflege besteht doch auch darin ständig zu optimieren
              Die Milch bleibt ranzig!

              Comment


              • #8
                Original geschrieben von Arjuna
                Danke dir, hab grad ne sicherheitslücke bei mir selbst entdeckt. Ich hab erwartet das das Erkannt wird, wie du es auch hast.
                was erkannt wird? Oo *verwirrt ist*

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Comment

                Working...
                X