such-funktion

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

  • 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,
    Zuletzt geändert von 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

    Kommentar


    • #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

      Kommentar


      • #4
        AAAAH entschuldigt bitte..

        Ich hab wohl viel zu beschränkt gedacht.

        Kommentar


        • #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

          Kommentar


          • #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.
            Zuletzt geändert von Arjuna; 21.08.2005, 21:03.
            C = Constant
            A = And
            N = Neverending
            I = Improvement

            Kommentar


            • #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!

              Kommentar


              • #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

                Kommentar

                Lädt...
                X