Login-Daten prüfen und Einträge an DB senden

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

  • Login-Daten prüfen und Einträge an DB senden

    Hallo,

    ich hoffe, der Titel ist nicht zu lang, aber man soll sich ja möglichst deutlich ausdrücken.

    Ich habe folgendes Problem: Ich möchte eine Seite erstellen, bei der Benutzer, die zuerst in der DB angelegt wurden (ID, Name & Passwort, Status) ein Formulaar ausfüllen können.

    Beim abschicken der Daten, die in einer DB erfasst werden, soll folgendes geschehen:

    Login-Prüfung - Passt das Kennwort zum Benutzer?
    Wenn ja, dann erscheint eine Meldung "Danke $user, die Angaben wurden übermittelt"

    Wenn nicht, soll eine Fehlermeldung kommen.

    Hier aber nun meine Abfrage, die bislang nur halbwegs funktioniert und selbst dabei wird das 30-Sekunden-Limit überschritten, aber die Angaben trotzdem in die DB aufgenommen.

    PHP-Code:
    <?
    if(isset($todo))
    $pwd = md5($passwort);
    $result = mysql_query("SELECT * FROM user WHERE uname='$uname' and passwort='$pwd'") or die ("Falsche Benutzerdaten");
      while(mysql_num_rows($result)) {
        while($row=mysql_fetch_array($result)) {
            {
            $sql = "INSERT INTO eintrag VALUES ('', '$uname', '$datum', '$zeit', '$thema', '$text')" ;
            $eintragen = mysql_query($sql);
            echo "<b>Vielen Dank, $uname. Die Mitteilung wird bearbeitet!</b>";
            }}}
            ?>
    Bitte beachten, dass ich beileibe kein PHP-Profi bin, sondern eher Tutorials als Grundlage nutze.

  • #2
    prüfe die Daten, bevor du sie an die DB übermittelst ausserdem ist mysql_error() ist dein Freund

    Kommentar


    • #3
      Was soll ich denn prüfen? Ob auch alle Felder ausgefüllt sind? Und wie geht das?

      Kommentar


      • #4
        das liegt an dieser zeile:

        PHP-Code:
         while(mysql_num_rows($result)) { 
        Dies gibt immer eine Zahl über 0 aus => True
        welches in einer Endlosschleife endet.. nimm diese Zeile und eine } am ende raus, dann sollte es gehen

        mfg

        Kommentar


        • #5
          Vielen Dank für die präzise Aussage, Trashar. So versteht man auch, was einem geraten wird.

          Nur, wenn ich bewusst ein falsches Passwort eingebe, kommt die eigentlich definierte Fehlermeldung nicht. Hast du da auch einen Tip?

          Kommentar


          • #6
            Original geschrieben von AndiA
            Nur, wenn ich bewusst ein falsches Passwort eingebe, kommt die eigentlich definierte Fehlermeldung nicht.
            natürlich nicht.

            so lange die abfrage syntaktisch korrekt ist, kann die DB sie auch ausführen, und mysql_query gibt immer eine ergebniskennung zurück.

            bei falschem passwort wäre die ergebnismenge dann leer - darauf musst du abfragen.
            (und bist mit mysql_num_rows ja auch schon nah dran ...)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              PHP-Code:
              <?
              if(isset($todo))
              $pwd = md5($passwort);
              $result = mysql_query("SELECT * FROM user WHERE uname='$uname' and passwort='$pwd'") or die ("Falsche Benutzerdaten");
               if(mysql_num_rows($result) == 1) {
                 
                      $sql = "INSERT INTO eintrag VALUES ('', '$uname', '$datum', '$zeit', '$thema', '$text')" ;
                      $eintragen = mysql_query($sql);
                      echo "<b>Vielen Dank, $uname. Die Mitteilung wird bearbeitet!</b>";
                      }
              else echo "Kein Zugang";
                      ?>
              oben das die() tritt nur in kraft, wenn du einen syntax fehler in der mysql anweisung hast oder es zb die tabelle nicht gibt

              mfg

              Kommentar


              • #8
                Danke Trashar, es läuft jetzt einwandfrei!

                Edit: Nur noch einmal der Schönheit halber: Das "Kein Zugang" erscheint nun auch schon beim ersten Aufrufen der Seite. Wie kann ich erzwingen, dass das am Anfang leer ist?
                Zuletzt geändert von AndiA; 06.07.2004, 12:37.

                Kommentar


                • #9
                  Original geschrieben von AndiA
                  Nur noch einmal der Schönheit halber: Das "Kein Zugang" erscheint nun auch schon beim ersten Aufrufen der Seite. Wie kann ich erzwingen, dass das am Anfang leer ist?
                  frage zunächst ab, ob das formular mit den logindaten überhaupt gesendet wurde, oder ob die seite "nur so" aufgerufen wurde.


                  btw: dass das erste if sich nur auf die direkt folgende anweisung auswirkt, ist dir bewusst?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Huh, da komme ich nicht so ganz mit. Sehe ich es rchtig, dass ich eine zusätzliche Eck-Klammer setzen muss und die Else-Anweisung früher angeben muss?

                    Kommentar

                    Lädt...
                    X