MichaelS: Wahnsinn... PHP abfrage nach einen kennwort

0 44

Wahnsinn... PHP abfrage nach einen kennwort

MichaelS
  • php
  1. 0
    Carl
  2. 0
    fastix
  3. 0
    Lemmy Danger
  4. 0
    Tobias K.
    1. 0
      MichaelS
      1. 0
        Tobias K.
        1. 0
          MichaelS
          1. 0
            Sorgenkind Mech
            1. 0
              Lemmy Danger
              1. 0
                Sorgenkind Mech
                1. 0
                  MichaelS HILFE !!!!
                  1. 0
                    Lemmy Danger
                  2. 0
                    Sorgenkind Mech
                    1. 0
                      MichaelS
                      1. 0
                        Sorgenkind Mech
                        1. 0
                          MichelS...
                    2. 0
                      DAS IST RICHTIG MichaelS... hatte fehler dinnen
                      1. 0
                        Sorgenkind Mech
                        1. 0
                          MichaelS
                          1. 0
                            Sorgenkind Mech
                            1. 0
                              Michaels
                              1. 0
                                Sorgenkind Mech
                          2. 0
                            Tobias K.
                            1. 0
                              MichaelS
                              1. 0
                                Tobias K.
                          3. 0
                            Lemmy Danger
                            1. 0
                              MichaelS
                              1. 0
                                Tobias K.
                                1. 0
                                  MichaelS
                                  1. 0

                                    Gott sei dank...

                                    Lemmy Danger
                                    1. 0
                                      Tobias K.
                              2. 0
                                Lemmy Danger
                                1. 0
                                  Tobias K.
                  3. 0
                    Tobias K.
                2. 0
                  Lemmy Danger
                  1. 0
                    Sorgenkind Mech
                3. 0
                  Christian Seiler
      2. 0
        Sven Rautenberg
        1. 0
          AnalphaBestie
          1. 0

            Was soll ich werden? ;)

            Sven Rautenberg
            • menschelei
        2. 0

          Aufnahme von vertrauensunwürdigen Parametern in die MySQL-Query

          molily
          • datenbank
          1. 0
            Sven Rautenberg
  5. 0
    Matze

Hallo...

Versuche gerade eine Kennwortabfrage auf einer Mysql-Datenbank zu realisieren... (...HTML Formular [Abfrage Benutzername und kennwort] dann soll über PHP in der datenbank nachgesehen werden, ob dieser Benutzer mit diesem kennwort vorhanden ist... wenn ja woll er weitergeleitet werden auf eine andere Seite...) leider bekomme ich nur Müll von PHP präsentiert...
Hat schonmal einer sowas in PHP geschrieben?
Wenn ja... kann mir einer dein Script zur Verfügung stellen... Habe schon drei Bücher gekauft, aber nirgens sind dafür Beispiele drinnen....

Danke...

Michael

  1. Hi

    schau dir mal das hier an:

    <?
    if (mysql_errno())
    {
     die("<br>" . mysql_errno(). ": ".mysql_error()."<br>");
    }
    if (!empty($name) && !empty($pass))
     {
     require("db_connect.php");
     $query = "SELECT user, pw FROM users";
     $result = mysql_query($query);
      if (mysql_errno())
      {
      die("<br>" . mysql_errno(). ": ".mysql_error()."<br>");
      }

    while ($row = mysql_fetch_row($result))
      {
       if (mysql_errno())
       {
       die("<br>" . mysql_errno().": ".mysql_error()."<br>");
       }
      if ($name==$row[0] && $pass==$row[1])
       {
       setcookie("$username", "$passwort", time()+3600);
       include("intern/go.php");
       }
      else
       echo "<br>Falscher Loginname bzw. Passwort, bitte versuche dich erneut einzuloggen.";
      }
     }
    else
     echo "<br> Bitte fülle alle Felder aus.";
    ?>

    funktionieren tuts, musst es nur soweit wie dus brauchst anpassen.

    Gruss
    Carl

  2. Wenn ja... kann mir einer dein Script zur Verfügung stellen... Habe schon drei Bücher gekauft, aber nirgens sind dafür Beispiele drinnen....

    Lieber Michael!

    Wenn Du die drei Bücher nicht nur gekauft hast dann solltest wirklich überlegen, ob Du, wenn Du so etwas einfaches nicht hinbekommst zum Programmieren wirklich geeignet bist. Vielleicht kannst Du ja klasse Singen, Auto fahren, oder... oder. Es ist halt so. Ich kann nicht singen.

    Ws Dein Programm leisten soll, dass weisst Du schon mal. Gut so. Bei Komplexen Themen nennt man das Pflichtenheft. Brauchst Du hier nicht.

    Hast Du Dir schon mal so was wie einen Programmablaufplan gebaut?
    Nein?

    Ok, machen wir das mal mit den hier vorhanden Möglichkeiten:

    [0]Input: username, passwort

    [1] username<>"" ? Ja -> [2]; Nein -> [0]
    [2] passwort<>"" ? Ja -> [3]; Nein -> [0]
    [3] auswahl von passwort_db aus Datenbank für username_db=username
    [4] passwort_db==passwort ? Ja -> [6]; Nein [5]
    [5] Fehlermeldung, Weiterleitung
    [6] Inhalte zeigen

    So. Für diese einfachen Schritte findest Du sicher Beispiele in den Büchern, und kannst alles programmieren.

    fastix

  3. Ei guude wie?

    Wenn ja... kann mir einer dein Script zur Verfügung stellen...

    Aber, aber, sowas schreiben wir uns doch selbst... Folgende Überlegungen dazu:

    • Man gibt einen Namen und ein Passwort in ein Formular ein. Diese werden an ein PHP-Skript zum Auswerten gesendet. Dazu nehmen wir die POST-Methode. Wie werden die Eingaben beim Skript entgegengenommen? Richtig, als $_POST["name"] und $_POST["passwort"].

    • Die authorisierten Benutzer stehen in einer MySQL-Datenbank. Dabei steht der Benutzername im Klartext und das Passwort mittels md5() chiffriert in einer Tabelle. Wir rufen also diese Tabelle auf, lesen sie zeilenweise aus und überprüfen, ob der eingegebene Benutzername in dieser Tabelle vorkommt.

    • Tut er das, dann chiffrieren wir mittels md5() das eingegebene Passwort und vergleichen dieses mit dem in der Tabelle stehendem, das zu dem betreffenden Benutzernamen gehört. Stimmen diese überein, wird der Benutzer auf die entsprechende Seite umgeleitet und eine Session eröffnet (damit andere, nicht authorisierte Benutzer nicht durch blosse Kenntnis der entsprechenden URL in den geschützten Bereich gelangen). Andernfalls wird man zur Login-Seite umgeleitet.

    Das ist's eigentlich schon. An Grundlagen benötigst Du nur das Wissen, wie man eine MySQL-Abfrage macht, wie man mit while-Schleifen und if-Abfragen umgeht und die Funktionen session_start() und md5(). Das müsstest Du schon hinkriegen, zur Not einfach mal posten, wo _genau_ es hakt - mit Fehlermeldung, Quelltext und allem drum und dran... Aber Du schaffst das - wir glauben fest an Dich ;-)

    LG ausm Hesseland
    Lemmy

    http://www.olison.com

    --
    Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
  4. Hallo Michael,

    Versuche gerade eine Kennwortabfrage auf einer Mysql-Datenbank zu realisieren... (...HTML Formular [Abfrage Benutzername und kennwort] dann soll über PHP in der datenbank nachgesehen werden, ob dieser Benutzer mit diesem kennwort vorhanden ist... wenn ja woll er weitergeleitet werden auf eine andere Seite...)

    das Formular wird du ja hinbekommen :-)
    die Abfrage aus der Datenbank sieht etwas so aus:
    SELECT user,passwort FROM tabellenname WHERE name = '$name' LIMIT 0, 1
    (nicht vergessen, auf die Formularinhalte mit $_POST["..."] zuzugreifen)
    dann überprüfst du mit
    if ($_POST["eingegebenespasswort"] == $passwortausdb)
    ob das Passwort stimmt (falls du das Passwort in der Datenbank verschlüsselt hast musst du das aus dem Formular vor dem überprüfen auch verschlüsseln)
    wenn ja leitest du z.B. mit header("Location: seite.php") weiter
    wenns noch Fragen gibt kannst du ja noch mal nachfragen :-)

    leider bekomme ich nur Müll von PHP präsentiert...

    inwiefern? wie sieht denn der Code bisher aus?

    Hat schonmal einer sowas in PHP geschrieben?

    ja.

    Wenn ja... kann mir einer dein Script zur Verfügung stellen...

    nene, fertige Scripte gibt es hier nicht :-)

    Habe schon drei Bücher gekauft, aber nirgens sind dafür Beispiele drinnen....

    nur interessenhalber: welche?

    Grüße aus Nürnberg
    Tobias

    1. Hallo Tobias!

      Habs noch nicht hinbekommen... leider... hier meine Antworten auf deine Fragen:  ;-)

      das Formular wird du ja hinbekommen :-)

      ja... das sieht sogar klasse aus ;-))

      die Abfrage aus der Datenbank sieht etwas so aus:
      SELECT user,passwort FROM tabellenname WHERE name = '$name' LIMIT 0, 1 (nicht vergessen, auf die Formularinhalte mit $_POST["..."] zuzugreifen) dann überprüfst du mit
      if ($_POST["eingegebenespasswort"] == $passwortausdb)ob das Passwort stimmt (falls du das Passwort in der Datenbank erschlüsselt hast musst du das aus dem Formular vor dem überprüfen auch verschlüsseln)

      Passwort in in Formular u. in d. Datenbankmd5 verschlüsselt

      Mein Code:

      <?php

      include("kontakt.inc");
          $verbindung = mysql_connect($host, $user, $pwd);
          if(@mysql_connect($host, $user, $pwd))

      {
       echo "<hr>Es wird eine Verbindung zu unserem Datenbankserver hergestellt... \n";
       echo "<hr> Bitte haben Sie einen augenblick geduld...<hr\n";
       if(@mysql_select_db($dbname))

      {
        $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");
        if($erg)

      {
         echo "<hr>Ausgabe der Datensätze....<hr>\n";
         while($row = mysql_fetch_row($erg))

      if ($benutzername==$row[0] && $kw==$row[1])
          {
          echo "verwaltung.htm\n";
          }
          else
          echo "Benutzername und Kennwort ist falsch!\n";

      }
        else
         echo "<hr>Es konnten keine Datensätze gefunden werden... FEHLER!<hr>\n";
        }
       else
        echo "<hr>Keine Verbindung zu Datenbankserver... FEHLER!<hr>\n";
       mysql_close();
       }
          else
           echo "<hr>Verbindungsaufbau fehlgeschlagen... FEHLER!<hr>\n";
      ?>

      nur interessenhalber: welche?

      MYSQL und PHP für dummies

      Ich denke... ich mach keine besonderen Eindruck mit diesem Code oder?

      Gruß Michael

      1. Hallo Michael,

        include("kontakt.inc");

        was steht hier drin? (irgendwas relevantes?)

        $verbindung = mysql_connect($host, $user, $pwd);

        ob host, user und pwd stimmen, musst natürlich du wissen :-)

        if(@mysql_connect($host, $user, $pwd))

        warum machst du hier nochmal eine Verbindung auf?

        {
         echo "<hr>Es wird eine Verbindung zu unserem Datenbankserver hergestellt... \n";
         echo "<hr> Bitte haben Sie einen augenblick geduld...<hr\n";

        das ist blödsinnig, wenn die Seite beim User ankommt, ist die Verbindung schon längst hergestellt (bzw. schon wieder getrennt) außerdem fehlt beim eine <hr> die schließende Klammer :-)

        if(@mysql_select_db($dbname))

        warum unterdrückst du immer die Fehler?

        {
          $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");

        hier solltest du noch sowas wie WHERE benutzername = $name einfügen, damit du nur den Datensatz erhälst den du brauchst

        echo "<hr>Ausgabe der Datensätze....<hr>\n";

        warum Ausgabe? ich dachte du willst überprüfen ob das Passwort stimmt.

        if ($benutzername==$row[0] && $kw==$row[1])

        verschlüsseln des Passworts nicht vergessen, also: md5($kw)==$row[1] (ich gehe mal davon aus, dass $kw das Passwort enthält)

        echo "verwaltung.htm\n";

        mhh... das verstehe ich jetzt aber nicht warum gibst du "verwaltung.htm" aus?

        echo "Benutzername und Kennwort ist falsch!\n";

        es kann auch nur eins von beiden falsch sein (also nicht 'und' sondern 'und/oder'

        echo "<hr>Keine Verbindung zu Datenbankserver... FEHLER!<hr>\n";
         mysql_close();

        warum schließt du die Verbindung wenn garkeine zustandegekommen ist?

        nur interessenhalber: welche?
        MYSQL und PHP für dummies

        :-) - ich habe PHP4 Grundlagen und Profiwissen (ist allerdings nicht ganz billig)

        Ich denke... ich mach keine besonderen Eindruck mit diesem Code oder?

        naja, interessanter wäre es, was passiert, wenn du den Code ausführst. Welche Fehlermeldung? Was spuckt er aus?

        Grüße aus Nürnberg
        Tobias

        1. Hallo Tobias,

          include("kontakt.inc");
          was steht hier drin? (irgendwas relevantes?)

          Da steht z.b. localhost, root kenntort und datenbankname drinnen, aber kein aufbauf der verbindung

          if(@mysql_select_db($dbname))
          warum unterdrückst du immer die Fehler?

          Was meinst du damit ??

          {
            $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");
          hier solltest du noch sowas wie WHERE benutzername = $name einfügen, damit du nur den Datensatz erhälst den du brauchst

          wo muß ich das einfügen?

          if ($benutzername==$row[0] && $kw==$row[1])
          verschlüsseln des Passworts nicht vergessen, also: md5($kw)==$row[1] (ich gehe mal davon aus, dass $kw das Passwort enthält)

          ok... habe ich gemacht...

          echo "verwaltung.htm\n";

          da sollte dann location "verwaltung.htm"; stehen :-) zu weiterleitung an eine neue Seite :-)

          mysql_close();
          warum schließt du die Verbindung wenn garkeine zustandegekommen ist?

          Muß mann die nicht wieder schließen? hhmmm...

          Nochmal mein neuer Code:

          <?php

          include("kontakt.inc");
              if(@mysql_connect($host, $user, $pwd))
           {
           if(@mysql_select_db($dbname))
            {

          $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");
            if($erg)
             {

          while($row = mysql_fetch_row($erg))
              if ($benutzername==$row[0] && md5($kw)==$row[1])
              {
              echo "Location verwaltung.php";
              }
              else
              echo "Benutzername und Kennwort ist falsch!\n";

          }
            else
             echo "<hr>Es konnten keine Datensätze gefunden werden... FEHLER!<hr>\n";
            }
           else
            echo "<hr>Keine Verbindung zu Datenbankserver... FEHLER!<hr>\n";
           mysql_close();
           }
              else
               echo "<hr>Verbindungsaufbau fehlgeschlagen... FEHLER!<hr>\n";

          Michael

          1. moin

            if(@mysql_select_db($dbname))
            warum unterdrückst du immer die Fehler?
            Was meinst du damit ??

            das @ vor der anweisung weist php an, einen eventuell entstehenden fehler bei der ausführung nicht anzuzeigen

            {
              $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");
            hier solltest du noch sowas wie WHERE benutzername = $name einfügen, damit du nur den Datensatz erhälst den du brauchst
            wo muß ich das einfügen?

            $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER WHERE benutzername = '$name'");

            if ($benutzername==$row[0] && $kw==$row[1])
            verschlüsseln des Passworts nicht vergessen, also: md5($kw)==$row[1] (ich gehe mal davon aus, dass $kw das Passwort enthält)
            ok... habe ich gemacht...

            echo "verwaltung.htm\n";
            da sollte dann location "verwaltung.htm"; stehen :-) zu weiterleitung an eine neue Seite :-)

            also location.href=§verwaltung.htm"; ?
            javascript tags nich vergessen ;) (<script language=javascript></script>)

            mysql_close();
            warum schließt du die Verbindung wenn garkeine zustandegekommen ist?
            Muß mann die nicht wieder schließen? hhmmm...

            is schon besser, nur steht die anweisung im else block, d.h. dass diese schließung angewiesen wird, wenn nix geöffnet wird

            gruß

            1. Ei guude wie?

              also location.href=§verwaltung.htm"; ?
              javascript tags nich vergessen ;) (<script language=javascript></script>)

              Also:

              1. Macht man sowas nicht mit JS, denn was passiert, wenn man's nicht aktiviert hat? Besser wäre header("location: http://www.deineDomain.de/verwaltung.htm");

              2. Sollte man nicht mehr language="javascript", sondern type="text/javascript" verwenden...

              LG ausm Hesseland
              Lemmy

              http://www.olison.com

              --
              Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
              1. Ei guude wie?

                was?

                also location.href=§verwaltung.htm"; ?
                javascript tags nich vergessen ;) (<script language=javascript></script>)
                Also:

                1. Macht man sowas nicht mit JS, denn was passiert, wenn man's nicht aktiviert hat? Besser wäre header("location: http://www.deineDomain.de/verwaltung.htm");

                tja, denn is halt scheiße ......
                wobei ich die leute immernoch nich verstehe, die js deaktivieren
                aber daraus soll jetz keine diskussion werden, hatte ich schon oft genug ;)

                1. Sollte man nicht mehr language="javascript", sondern type="text/javascript" verwenden...

                warum das denn?

                gruß

                1. Hallo Ihr Nachtuser...

                  Also... habe mal versucht alle Ratschläge zu übersetzen... Bin halt doch Anfänger...

                  neuer Code:
                  <?php

                  include("kontakt.inc");
                  if(@mysql_connect($host, $user, $pwd))
                  if(@mysql_select_db($dbname))
                    {
                    $erg = @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '{$_POST['kw']}'");
                      if($erg)
                    print "Location: http://www.jupu.dyndns.org/php/index.htm";
                    else
                    echo "falsches kw\n";
                    }
                  mysql_close()
                  ?>

                  So... nun habe ich das Problem... das egal was ich in meinem Formular eingebe immer das dann im Bowser angzeigt bekomme:
                  Location: http://www.jupu.dyndns.org/php/index.htm    !!! KOMISCH!!!
                  Egal ob das passwort richtig ist oder falsch... immer das gleiche...

                  WAs soll ich tuuuuuuuuun ???

                  Hilfe... knalle gleich durch !!!

                  Michael

                  Danke für eure Unterstützung :-))

                  1. Ei guude wie?

                    print "Location: http://www.jupu.dyndns.org/php/index.htm";

                    So... nun habe ich das Problem... das egal was ich in meinem Formular eingebe immer das dann im Bowser angzeigt bekomme:
                    Location: http://www.jupu.dyndns.org/php/index.htm    !!! KOMISCH!!!

                    Ja, irgendwie seltsam.... "print" heisst doch zu deutsch "drucken", und PHP "druckt" Dir nun "Location: ...." auf den Bildschirm, genau wie Du befohlen. Also: Die Funktion heisst

                    header("Location: http://www.jupu.dyndns.org/php/index.htm");

                    auch nachzuschlagen unter http://www.php.net/manual/de/. Nix print, nix echo oder sonstwie - einfach nur header("...");

                    LG ausm Hesseland
                    Lemmy

                    http://www.olison.com

                    --
                    Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
                  2. Hallo Ihr Nachtuser...

                    Also... habe mal versucht alle Ratschläge zu übersetzen... Bin halt doch Anfänger...

                    neuer Code:
                    <?php

                    include("kontakt.inc");
                    if(@mysql_connect($host, $user, $pwd))
                    if(@mysql_select_db($dbname))
                      {
                      $erg = @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '{$_POST['kw']}'");
                        if($erg)

                    dieses if fragt nur ab ob §erg true ist, d.h. in diesem falle, ob die operation erfolgreich war, nicht aber, ob nun benutzername und kennwort übereinstimmen
                    d.h. entweder du überprüfst, wieviel datensätze du zurückgeliefert bekommen hast oder du machst folgendes:

                    $erg = @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}'");
                    $erg=mysql_fetch_array($erg,MYSQL_ASSOC);
                    if($erg['kw']==md5($_POST['kw']))

                    ich sehe gerade da oben stehen geschweifte klammern, steht in der db etwa "{benutzername}" ??

                    print "Location: http://www.jupu.dyndns.org/php/index.htm";

                    so, und das heißt, dass nun das als text hingeschrieben wird
                    entweder du nimmt include("http://www.jupu.dyndns.org/php/index.htm");
                    oder require("http://www.jupu.dyndns.org/php/index.htm");

                    oder echo "<script language=javascript> location.href="http://www.jupu.dyndns.org/php/index.htm"; </script>";

                    oder die variante mit dem header, aber davon habe ich keine ahnung ;)

                    else
                      echo "falsches kw\n";
                      }
                    mysql_close()
                    ?>

                    Danke für eure Unterstützung :-))

                    naja, man versuchts ;)

                    gruß

                    1. Nu sieht es so aus:

                      <?php

                      include("kontakt.inc");
                      if(@mysql_connect($host, $user, $pwd))
                      if(@mysql_select_db($dbname))
                        {
                        $erg=@mysql_query("SELECT benutzername, kwd FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kwd'])."'");
                        $erg1=mysql_fetch_array($erg,MYSQL_ASSOC);
                        if($erg1['kw']==md5($_POST['kwd']))
                        header("Location: http://www.jupu.dyndns.org/index.htm");
                        else
                        echo "falsches kw\n";
                        }
                      mysql_close()
                      ?>

                      UND ERHALTE FOLGENDE FEHLERMELDUNG:

                      Warning: Supplied argument is not a valid MySQL result resource in e:\jupu.dyndns.org\_php\kennung.php on line 9
                      falsches kw

                      was ist nun wieder falsch ???
                      Hinweis... habe imFormular  das kennwort so :
                          <input type="password" name="kwd" size="20"
                      in MySQL habe ist das Feld für "kwd (Kennword) auch als password deklariert!

                      Was ist nun noch falsch ?

                      Wann darf mann aufgeben ?? ;-)

                      Micahel

                      1. $erg=@mysql_query("SELECT benutzername, kwd FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kwd'])."'");

                        heißt denn in der db das feld "kwd"??
                        ansonsten müsste es ja select benutzername, kw ... heißen

                        das würde erklären, warum $erg kein gültiges ergebnis ist

                        Wann darf mann aufgeben ?? ;-)

                        Micahel

                        aufgeben?
                        wenn der zeitraum abgelaufen ist, in dem dir das ganze was nützt ;)

                        gruß

                        1. aufgeben?
                          wenn der zeitraum abgelaufen ist, in dem dir das ganze was nützt ;)

                          ... Das ist ja das schlimme... ich brauche diese Abfrage dringend...!

                          NEUER CODE FUNKTIONIERT WUNDERBAR... ABER DAS MIT LOCATION GEHT NOCH NICHT:

                          NEUER CODE:

                          <?php

                          include("kontakt.inc");
                          if(@mysql_connect($host, $user, $pwd))
                          if(@mysql_select_db($dbname))
                            {
                            $erg=@mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");
                            $erg=mysql_fetch_array($erg,MYSQL_ASSOC);
                            if($erg['kw']==md5($_POST['kw']))
                            HEADER("Location: http://jupu.dyndns.org/index.htm");
                            else
                            echo "falsches kw\n";
                            }
                          mysql_close()
                          ?>

                          Möchte noch sagen... ielen vielen dank !!!

                          Michael

                    2. HATTE FEHLER IN DEM CODE, aber

                      Nu sieht es so aus:
                      <?php

                      include("kontakt.inc");
                      if(@mysql_connect($host, $user, $pwd))
                      if(@mysql_select_db($dbname))
                        {
                        $erg=@mysql_query("SELECT benutzername, kwd FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");
                        $erg1=mysql_fetch_array($erg,MYSQL_ASSOC);
                        if($erg1['kw']==md5($_POST['kw']))
                        header("Location: http://www.jupu.dyndns.org/index.htm");
                        else
                        echo "falsches kw\n";
                        }
                      mysql_close()
                      ?>

                      SO NUN IST ES ABER SO... EGAL WAS ICH FÜR EIN KENNWORT EINGEBE,... ES HEISST IMMER FALSCHES KENNWORT !!!!
                      WAAAARRRUUUMMM ? ;-))
                      Was ist nun noch falsch ?

                      Wann darf mann aufgeben ?? ;-)

                      Micahel

                      1. $erg=@mysql_query("SELECT benutzername, kwd FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");

                        ich denk in deinem form heißt das ding "kwd" und nich "kw" --> $_POST['kw']

                        und das kwd bei select hatte ich ja schon geschrieben, weiß ja nich, ob du das tebellenfeld in der db auch geändert hat

                        gruß

                        1. ich denk in deinem form heißt das ding "kwd" und nich "kw" --> $_POST['kw']

                          ja das war ein kleiner fehler... entschuldigung...  habe es geändert und jetzt klappt es soweit... nur der aufruf von einer neuen seite geht nocht nicht ...

                          FEHLERMELDUNG:
                          Warning: Cannot add header information - headers already sent by (output started at e:\jupu.dyndns.org\_php\kennung.php:2) in e:\jupu.dyndns.org\_php\kennung.php on line 11

                          CODE:

                          <?php

                          include("kontakt.inc");
                          if(@mysql_connect($host, $user, $pwd))
                          if(@mysql_select_db($dbname))
                            {
                            $erg=@mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");
                            $erg=mysql_fetch_array($erg,MYSQL_ASSOC);
                            if($erg['kw']==md5($_POST['kw']))
                            HEADER("Location: http://jupu.dyndns.org/index.htm");
                            else
                            echo "falsches kw\n";
                            }
                          mysql_close()
                          ?>
                             DER CODE KLAPPT SOWEIT... KENNWORT WIRD RICHTIG AUSGELESEN... ABER DIE WEITERLEITUNG AUF EINE ANDERE SEITE NOCH NICHT !!!

                          1. DER CODE KLAPPT SOWEIT... KENNWORT WIRD RICHTIG AUSGELESEN... ABER DIE WEITERLEITUNG AUF EINE ANDERE SEITE NOCH NICHT !!!

                            tjaaaa
                            soweit so gut

                            aber wie gesagt, von dem headerdingsbums hab ich keine ahnung ;)

                            wünsche dir viel glück noch, auf dass dir das noch jemand beantworten kann

                            ich werd mich ausm staub machen, hab mein problem schon selbst gelöst, auch wenn ich mir nich im klaren bin wo mein fehler lag ;)
                            wünsche noch eine gute nacht

                            grüße

                            1. Möchte mich bei Dir auch bedanken !!!

                              Gruß Michael

                              1. Möchte mich bei Dir auch bedanken !!!

                                Gruß Michael

                                bitte bitte, keine ursache

                                wenn ich kann helf ich gerne, ich bin ja auch nich der superscripter ;)

                                schönen abend noch und viel erfolg
                                bin auch grad bei was zu schreiben, n komplettes verwaltungsprog auf html-js-php-mysql basis, sprich kundenDB, ArtikelDB, Terminkalender, DokumenteDB ...... blabla

                                mein kopf raucht, und ich steh oft auch vor probs, weiß wie das is wenn man ma nich weiterkommt ;)

                                bis denn dann

                          2. Hallo Michael,

                            FEHLERMELDUNG:
                            Warning: Cannot add header information - headers already sent by (output started at e:\jupu.dyndns.org\_php\kennung.php:2) in e:\jupu.dyndns.org\_php\kennung.php on line 11

                            du darfst vor dem header(...) _nichts_ ausgeben (nicht mit echo/print und auch nicht als "nicht php bereich")

                            HEADER("Location: http://jupu.dyndns.org/index.htm");

                            header schreibt man soweit ich weiß klein

                            DER CODE KLAPPT SOWEIT... KENNWORT WIRD RICHTIG AUSGELESEN... ABER DIE WEITERLEITUNG AUF EINE ANDERE SEITE NOCH NICHT !!!

                            schrei hier bitte nicht rum.

                            Grüße aus Nürnberg
                            Tobias

                            1. HEADER("Location: http://jupu.dyndns.org/index.htm");
                              header schreibt man soweit ich weiß klein

                              habe auch klein geschrieben... mag er einfach nicht!

                              schrei hier bitte nicht rum.

                              Was meinst du mit schreien?? Kannst mich da mal aufklären?

                              wie schreibst du den eine locationanweisung?
                              iche habe nun so geschrieben:
                              ...
                              if($erg['kw']==md5($_POST['kw']))
                                header("location: http://jupu.dyndns.org/index.htm");   <<-richtig?
                                else
                                echo "falsches kw\n";
                                }
                              mysql_close()
                              ?>

                              Danke für deine Hilfe... vielen dank...

                              Michael

                              1. Hallo Michael,

                                schrei hier bitte nicht rum.
                                Was meinst du mit schreien?? Kannst mich da mal aufklären?

                                Wenn man in Großbuchstaben schreibt, wird das als Schreien empfunden

                                header("location: http://jupu.dyndns.org/index.htm");   <<-richtig?

                                ich schreibe "location" mit großem L, weiß aber nicht, ob das zwingend ist.

                                Grüße aus Nürnberg
                                Tobias

                          3. Ei guude wie?

                            Hast Du vor der Zeile mit header() irgendeinen Output, ein echo, ein print oder gar HTML? Dann stelle Deine Abfrage an den Anfang der Seite, denn header() fügt dem Header bei Seitenaufruf eine Information bei (wer hätte das gedacht?), d.h. sobald das erste Zeichen oder HTML-Tag ausgegeben wird, ist der Zug schon abgefahren.

                            Kopier also einfach die Datenbank-Abfrage an den Anfang Deiner Datei - dann klappt's schon.

                            LG ausm Hesseland
                            Lemmy

                            http://www.olison.com

                            --
                            Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
                            1. Hast Du vor der Zeile mit header() irgendeinen Output, ein echo, ein print oder gar HTML? Dann stelle Deine Abfrage an den Anfang der Seite, denn header() fügt dem Header bei Seitenaufruf eine Information bei (wer hätte das gedacht?), d.h. sobald das erste Zeichen oder HTML-Tag ausgegeben wird, ist der Zug schon abgefahren.

                              nein habe ich nicht... verstehe es einfach nicht...
                              hier der Code.. siehe selbst:  Was könnte ich ändern?
                              <?php

                              include("kontakt.inc");
                              if(@mysql_connect($host, $user, $pwd))
                              if(@mysql_select_db($dbname))
                                {
                                $erg=@mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");
                                $erg=mysql_fetch_array($erg,MYSQL_ASSOC);
                                if($erg['kw']==md5($_POST['kw']))
                                header("location: http://jupu.dyndns.org/index.htm");
                                else
                                echo "falsches kw\n";
                                }
                              mysql_close()
                              ?>

                              Möchte mich auch bei Dir für deine Hilfe bedanken... vielen dank !

                              Michael

                              1. Hallo MichaelS,

                                <?php

                                steht das wirklich _ganz_ am Anfang der Datei? Es darf keine Leerzeile davor sein...

                                include("kontakt.inc");

                                wie sieht denn dies Datei _genau_ aus? Vielleicht ist hier was drin, was ausgegeben wird.

                                Grüße aus Nürnberg
                                Tobias

                                1. ALLES OK !!!!

                                  Ich habe gefunden... am Anfang war noch eine leerzeile....

                                  Hab die weggemacht... und schon haut alles hinne...

                                  Wie kann ich mich bedanken.....

                                  Vielen vielen dank !!!!

                                  Sag einfach nur noch DANKE !!

                                  Michael

                                  1. ...es ist vollbrach!

                                    Gute Nacht zusammen und LG ausm Hesseland
                                    Lemmy

                                    http://www.olison.com

                                    --
                                    Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
                                    1. Hallo Lemmy,

                                      ...es ist vollbrach!

                                      da musst ich dir zustimmen - wir haben ja auch einen ordentlichen Thread produziert :-)

                                      Grüße aus Nürnberg
                                      Tobias

                              2. Ei guude wie?

                                $erg=mysql_fetch_array($erg,MYSQL_ASSOC);

                                Was ist MYSQL_ASSOC? Danke daran: PHP ist case-sensitive (Gross-/Kleinschreibung) und Variablen werde mit $ gekennzeichnet...

                                header("location: http://jupu.dyndns.org/index.htm");

                                Schreibe Location mit großem "L", sonst stimmt's (nachzulesen unter http://www.php.net/manual/de/function.header.php).

                                LG ausm Hesseland
                                Lemmy

                                http://www.olison.com

                                --
                                Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
                                1. Hallo Lemmy,

                                  $erg=mysql_fetch_array($erg,MYSQL_ASSOC);
                                  Was ist MYSQL_ASSOC?

                                  damit gibt man die art wie der Array aussieht an -> http://www.php.net/manual/de/function.mysql-fetch-array.php#AEN54108

                                  Danke daran: PHP ist case-sensitive (Gross-/Kleinschreibung) und Variablen werde mit $ gekennzeichnet...

                                  ja, aber in dem Fall gehört das so :-)

                                  Grüße aus Nürnberg
                                  Tobias

                  3. Hallo MichaelS  HILFE !!!!, <- Das kommt dabei raus, wenn sowas als Name drinsteht :-)

                    if(@mysql_connect($host, $user, $pwd))

                    jetzt lass doch mal die '@' weg, dann siehst du vielleicht eine Fehlermeldung

                    if(@mysql_select_db($dbname))
                      {
                      $erg = @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '{$_POST['kw']}'");
                        if($erg)

                    du musst (glaub ich zumindest) schon vorher das mit dem
                    while ($row = mysql_fetch_array($inhaltabfr, MYSQL_NUM)) o.ä.
                    machen, sonst weiß php ja nicht ob was gefunden wurde (mysql_query gibt auch TRUE zurück wenn nichts gefunden wurde)

                    print "Location: http://www.jupu.dyndns.org/php/index.htm";

                    falls du weiterleiten willst heißt das header("Location....index.htm"); (wobei es die Adresse nicht gibt :-))

                    echo "falsches kw\n";

                    was heißt jetzt eigentlich 'kw'? knauderwelsch wird es ja wohl nicht heißen :-)

                    außerdem solltest du mal etwas konsequenter Klammern setzten, vielleicht kann es (z.T. zumindest) daran liegen.

                    WAs soll ich tuuuuuuuuun ???

                    wenn du überhaupt nicht mehr durchblicks: ins Bett gehen :-)

                    Hilfe... knalle gleich durch !!!

                    ganz ruhig :-)

                    Grüße aus Nürnberg
                    Tobias

                2. Wünsche bislang einen angenehmen Abend gehabt zu haben!

                  Ei guude wie?
                  was?

                  hosche ma, bubb, isch wollt nur höre, wie's derr so geht... des is halt hessisch Gebabbel ;)

                  1. Macht man sowas nicht mit JS, denn was passiert, wenn man's nicht aktiviert hat?
                    tja, denn is halt scheiße ......

                  Eben, und wo wir doch schon mal PHP-Unterstützung haben...

                  1. Sollte man nicht mehr language="javascript", sondern type="text/javascript" verwenden...
                    warum das denn?

                  Die Erklärung findest Du hier: http://selfhtml.teamone.de/javascript/intro.htm#javascriptbereiche

                  LG ausm Hesseland
                  Lemmy

                  http://www.olison.com

                  --
                  Realität ist die Illusion, die durch ein zu geringes Maß an Alkohol entsteht...
                  1. Wünsche bislang einen angenehmen Abend gehabt zu haben!

                    danke auch

                    Ei guude wie?
                    was?
                    hosche ma, bubb, isch wollt nur höre, wie's derr so geht... des is halt hessisch Gebabbel ;)

                    ahja ...... da bin ich nich wirklich firm ;)

                    1. Macht man sowas nicht mit JS, denn was passiert, wenn man's nicht aktiviert hat?
                      tja, denn is halt scheiße ......
                      Eben, und wo wir doch schon mal PHP-Unterstützung haben...
                    1. Sollte man nicht mehr language="javascript", sondern type="text/javascript" verwenden...
                      warum das denn?
                      Die Erklärung findest Du hier: http://selfhtml.teamone.de/javascript/intro.htm#javascriptbereiche

                    thx, ich schau mal nach

                    LG ausm Hesseland
                    Lemmy

                    http://www.olison.com

                    gruß

                3. Hallo Mech,

                  tja, denn is halt scheiße ......

                  Warum denn? Selbst wenn ich JS vorrausetzen _könnte_, würde ich den Location-Header nehmen. Warum? Weil der _viel_ schneller ist. Bei JS muss die Seite erst geladen werden, wo der Location-Header drin steht, diese muss erst geparsed werden und der JS-Code interpretiert. Die HTTP-Header werden immer geparsed. Im Idealfall sind auch noch Keep-Alive-Requests verfügbar, dann kann der Browser den nächsten Request ein paar Millisekunden nach der Antwort absetzen. Und wenn damit auch noch eine höhere Kompabilität als mit der JS-Lösung erreicht wird, sehe ich _gar keinen_, aber auch _gar keinen_ Grund, JS in diesem Fall zu verwenden.

                  Grüße,

                  Christian

                  --
                  Ich wünsche allen ein frohes neues Jahr 2003!
                  Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
                  Hmm, was könnte ich sonst noch in die Signatur schreiben?
      2. Moin!

        Mein Code:

        ...ist kritikwürdig, was ja auch nicht anders zu erwarten war.

        <?php

        include("kontakt.inc");

        Du stellst hier eine Verbindung zur Datenbank her.

        $verbindung = mysql_connect($host, $user, $pwd);

        Und dann stellst du nochmal eine Verbindung zur Datenbank her, diesmal aber mit Unterdrückung der Fehlermeldung.

        if(@mysql_connect($host, $user, $pwd))

        Ist irgendwie doppelt gemoppelt, außerdem speicherst du beim zweiten Mal das Handle für den späteren Zugriff nicht.

        {
         echo "<hr>Es wird eine Verbindung zu unserem Datenbankserver hergestellt... \n";
         echo "<hr> Bitte haben Sie einen augenblick geduld...<hr\n";

        Der Browser wird diese Informationen ohnehin erst anzeigen, wenn PHP komplett fertig gelaufen ist. Sie sind für die Fehlersuche vielleicht interessant, für den Benutzer aber nicht - den interessiert absolut nicht, ob du eine Datenbank im Hintergrund laufen hast, oder was du sonst noch so treibst.

        if(@mysql_select_db($dbname))

        {
          $erg = @mysql_query("SELECT benutzername, kw FROM BENUTZER");

        Hier fragst du die Datenbank ab (bis hierher eigentlich alles in Ordnung bis auf die Kommentare).

        Du fragst _alle_ Benutzernamen und Passworte ab. Warum _alle_? Dich interessiert doch nur der Benutzername, dessen Username im Formular übergeben wurde. Dessen Passwort ist interessant, nicht das aller anderen.

        Du solltest also die SQL-Abfrage entsprechend ändern:
        @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}'");

        $_POST ermöglicht den in Zukunft nur noch funktionierenden Zugriff auf Formulardaten, die mit method="POST" gesendet wurden (für method="GET" und URL-Parameter nimmt man $_GET).

        Dann kriegst du hoffentlich nur _einen_ Eintrag, nämlich den des passenden Benutzers. Wenn du _keinen_ Eintrag erhälst, oder wenn du _mehr_ als einen Eintrag erhälst, hast du ein Problem: Entweder den Benutzer gibts noch nicht (dann kannst du ihn abweisen - sag aber nicht, dass der Benutzername falsch ist - auf diese Weise kann man ausprobieren, welche Benutzernamen es gibt, und dann für einen existierenden Benutzernamen Passwörter ausprobieren - sag einfach nur, dass die Anmeldung fehlgeschlagen ist.), oder es gibt den Benutzer zweimal. Es darf aber keine _zwei_ (oder mehr) identische Benutzernamen geben, ansonsten kannst du die Benutzer nicht mehr eindeutig identifizieren. Und genau das willst du.

        Fehlt noch die Prüfung des Passwortes. Diese kann man ebenfalls ganz prima in die SQL-Abfrage packen:

        @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '{$_POST['kw']}'");

        Dieser Ausdruck holt dir nur noch die Benutzereinträge, die in Benutzername und Passwort übereinstimmen.

        Das praktische daran: Du mußt im Prinzip nur noch gucken, ob du genau einen Eintrag erhälst. Wenn du mehr oder weniger als einen Eintrag erhälst, ist irgendwas falsch gelaufen, und du kannst den Benutzer abweisen.

        Wenn du das Kennwort md5-verschlüsselt in der Datenbank abspeicherst, dann könntest du mit
        @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}' AND kw = '".md5($_POST['kw'])."'");
        arbeiten. Die Funktion md5() verschlüsselt das Klartextpasswort. Benutze im Zweifel hier die identische Methode, die du auch zum Eintragen des Passwortes in die Datenbank benutzt.

        if($erg)

        {
           echo "<hr>Ausgabe der Datensätze....<hr>\n";
           while($row = mysql_fetch_row($erg))

        Wenn du, wie oben geschildert, die Prüfung der Anmeldedaten von der Datenbank erledigen läßt, kannst du dir das Auslesen und Prüfen aller Usereinträge hier sparen. Wenn du einige Millionen User hast, wäre das nämlich ziemlich zeitaufwendig.

        if ($benutzername==$row[0] && $kw==$row[1])
            {
            echo "verwaltung.htm\n";

        Tja, das ist schön, gibt den Text "verwaltung.htm" im Browser aus. Sollte das was anderes machen?

        }
            else
            echo "Benutzername und Kennwort ist falsch!\n";

        "Benutzername oder Kennwort falsch" wäre technisch korrekt formuliert.

        }
          else
           echo "<hr>Es konnten keine Datensätze gefunden werden... FEHLER!<hr>\n";
          }
         else
          echo "<hr>Keine Verbindung zu Datenbankserver... FEHLER!<hr>\n";
         mysql_close();
         }
            else
             echo "<hr>Verbindungsaufbau fehlgeschlagen... FEHLER!<hr>\n";
        ?>

        Ich denke... ich mach keine besonderen Eindruck mit diesem Code oder?

        Nicht wirklich. Du bist in PHP eingestiegen (sieht auf dieser Seite schon ganz ok aus), aber es mangelt am Datenbankverständnis noch erheblich.

        - Sven Rautenberg

        --
        "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
        1. Tag

          hat dir schonmal jemand gesagt das du lehrer werden solltest ?

          *scrn*

          Analpha

          1. Moin!

            hat dir schonmal jemand gesagt das du lehrer werden solltest ?

            *scrn*

            Man hat schon gefordert, dass ich doch lieber Koch oder Konditor hätte werden sollen, und ja: Lehrer-Forderungen sind auch schon eingegangen. :) Aber nicht so viele.

            - Sven Rautenberg

            --
            "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
        2. Hallo, Sven,

          @mysql_query("SELECT benutzername, kw FROM benutzer WHERE benutzername = '{$_POST['benutzername']}'");

          Abgesehen davon, dass der String womöglich am ökonomischten über 'SELECT benutzername, kw FROM benutzer WHERE benutzername = "'.$_POST['benutzername'].'"' notiert werden könnte ;-), habe ich eine Frage bezüglich der direkten Übernahme von externen Parametern.

          Wie weit ist es, trotz der Klammerung mit Stringbegrenzern im Statement '...', möglich, dass der in das Statement eingefügte String einen Stringbegrenzer und danach MySQL-Befehle enthalten kann? Generell kann externen Parametern nur nach Prüfung getraut werden, daher mein deduktiver Schluss:

          SELECT benutzername, kw FROM benutzer
          WHERE benutzername='xyz' DROP benutzer
                              ^^^^^^^^^^^^^^^^^^
                             $_REQUEST['whatever']

          Mit den möglichen und zulässigen MySQL-Queries bin ich wenig vertraut, aber seitdem ich hier einige Threads über exakt dieses Problem gelesen habe, bin ich bei meinen Projekten komplett auf mysql_escape_string() http://www.php.net/manual/de/function.mysql-escape-string.php umgestiegen, da dort vorher jedwede Parameter direkt in den Query-String eingefügt wurden. Das hieß, dass man, soweit möglich, jede erdenklichen MySQL-Befehle »einschmuggeln« hätte können und damit im schlimmsten Falle die Datenbank hätte löschen können, sofern dessen Name bekannt ist, so mutmaße ich in meinem Unwissen - deshalb habe ich mir systematisch diese Paranoia angewöhnt.

          Hältst du diese Methode für eine unnötige oder unzureichende Maßnahme oder hast du vergessen, darauf einzugehen...?

          In </archiv/2002/12/32353/#m175267> empfiehlst du es selbst... Wahrscheinlich habe ich es auch von dir gelernt. ;) Folglich eher nur eine Unaufmerksamkeit deinerseits...?

          ... aber es mangelt am Datenbankverständnis noch erheblich.

          Genau, das ist auch bei mir gewissermaßen der Fall, deshalb frage ich. :)

          Grüße,
          Mathias
          Metakeywords: Sicherheit Datenbank Anfrage Überprüfung Validierung Benutzereingaben $_POST $_GET mysql_query

          --
          Moving, watching, working, sleeping, driving, walking, talking, smiling
          Moving, watching, working, sleeping, driving, walking, talking, smiling
          Moving, watching, working, sleeping, driving, walking, talking, smiling
          Moving, watching, working, sleeping, ...     (Air - People In The City)
          1. Moin!

            Wie weit ist es, trotz der Klammerung mit Stringbegrenzern im Statement '...', möglich, dass der in das Statement eingefügte String einen Stringbegrenzer und danach MySQL-Befehle enthalten kann? Generell kann externen Parametern nur nach Prüfung getraut werden, daher mein deduktiver Schluss:

            SELECT benutzername, kw FROM benutzer
            WHERE benutzername='xyz' DROP benutzer
                                ^^^^^^^^^^^^^^^^^^
                               $_REQUEST['whatever']

            Ja, du hast natürlich Recht! Das Problem, dass möglicherweise böse Daten in den Query eingeschleppt werden, besteht. Das ist aber ein grundsätzliches Problem, keines, was nur bei der Authentifizierung auftritt.

            Mit den möglichen und zulässigen MySQL-Queries bin ich wenig vertraut, aber seitdem ich hier einige Threads über exakt dieses Problem gelesen habe, bin ich bei meinen Projekten komplett auf mysql_escape_string() http://www.php.net/manual/de/function.mysql-escape-string.php umgestiegen, da dort vorher jedwede Parameter direkt in den Query-String eingefügt wurden. Das hieß, dass man, soweit möglich, jede erdenklichen MySQL-Befehle »einschmuggeln« hätte können und damit im schlimmsten Falle die Datenbank hätte löschen können, sofern dessen Name bekannt ist, so mutmaße ich in meinem Unwissen - deshalb habe ich mir systematisch diese Paranoia angewöhnt.

            Nur weil man paranoid ist, bedeutet das noch lange nicht, dass sie einen nicht verfolgen.

            Hältst du diese Methode für eine unnötige oder unzureichende Maßnahme oder hast du vergessen, darauf einzugehen...?

            Ich habe diesen Aspekt fahrlässig vernachlässigt. Denn das Thema ist leider dann doch ziemlich komplex:

            PHP arbeitet gewöhnlich mit magic_quotes_gpc = on, escaped also alle Anführungszeichen " und ' durch einen Backslash. Diesen Backslash muß man, bevor man mysql_escape_string() ansetzt, aber wieder loswerden - aber natürlich nur, wenn magic_quotes_gpc wirklich eingeschaltet ist.

            Mit anderen Worten: Man hat höllisch viel zu tun, um einen String datenbankgerecht aufzubereitet. Sinnvollerweise erledigt man das natürlich in einer dafür vorgesehenen Funktion.

            Ich habe diesen Aufwand aus der Betrachtung weggelassen, weil er mehr verwirrt als geholfen hätte. Außerdem kann man in PHP durch mysql_query() nur _einen_ MySQL-Query absenden. "SELECT irgendwas; DROP tabelle" kommt also nicht durch. Aber man könnte die Authentifizierung angreifen, indem man "OR 1=1" oder ähnlich geeignet passende Bedingungen zum WHERE hinzufügt, um eine erfolgreiche Authentifizierung vorzutäuschen.

            - Sven Rautenberg

            --
            "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
  5. <?
    if((!isset($f)or($f==0)){
    ?>
    <form action="diese_datei.php">
    <input type="text" name="Ben">
    <input type="password" name="Pas">
    <input type="hidden" name="f" value="1">
    </form>
    <?
    }elseif((isset($f))and($f=="1")){
    $db=mysql_connection("localhost","benutzer","passwort");
    $Daten=mysql_db_query("Datenbankname","select * from Tabellenname where Benutzer='$Ben' and Passwort='$Pas'",$db);
    $menge=mysql_num_rows($Daten);
    if($menge==1){
    ?>
    <script language="javascript">
    window.location.href="Zeildateiname";
    </script>
    <?
    }}
    ?>

    Hoffe ich konnte weiterhelfen