Script speichert Daten doppelt in die Datenbank!

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

  • Script speichert Daten doppelt in die Datenbank!

    Hallo Freunde der Scriptsprachen!

    Ich bin neu hier und habe schon einige Erfahrung mit PHP etc. aber bin gerade bei einem Script ratlos!

    Ich habe ein Login geschrieben, mit Abfrage ob der Username schon vergeben ist!

    Diese Funktion funktioniert auch, aber es speichert die Daten doppelt in der Datenbank ab und ich kann mich auch nicht mit den Daten einloggen, die in die Datenbank gespeichert werden, obwohl sie richtig übertragen werden, habe es mit "echo" überprüft!

    Reg.php:
    <?php
    include ('config2.php');
    $benutzername= $_POST['benutzername'];
    $passwort= md5($_POST['passwort']);
    $passwort2= md5($_POST['passwort2']);
    $mail= $_POST['email'];
    $name= $_POST['name'];
    $datum= $_POST['datum'];


    if (empty($benutzername) || empty($passwort) || $passwort!=$passwort2 || empty($mail) || empty($name) || empty($datum))

    {
    echo "<p align='center'>Bitte f&uuml;llen Sie alle Felder aus!</p>";
    }

    else

    {
    $sql_select = ("SELECT benutzername FROM benutzerverwaltung WHERE benutzername='".$name."' ");
    $result = mysql_query ("SELECT benutzername FROM benutzerverwaltung WHERE benutzername='".$benutzername."' ");
    if (mysql_num_rows ($result) == true)
    {
    echo "<p align='center'>Benutzername bereits vergeben</p>";
    }
    else{$sqldaten = "INSERT INTO benutzerverwaltung(id, benutzername, passwort, email, name, datum) VALUES ('', '$benutzername', '$passwort', '$mail', '$benutzername', '$datum')";
    mysql_query($sqldaten);
    if(mysql_query($sqldaten)){
    echo "<p align='center'>Der Benutzer-Eintrag konnte erfolgreich ausgef&uuml;hrt werden!</p>";}
    }
    }

    mysql_close($db);

    ?>

    Login-Daten prüfen:
    <?php
    include ('config2.php');
    $benutzername= $_POST['benutzername'];
    $passwort= md5($_POST['passwort']);


    $abfrage = "SELECT passwort FROM benutzerverwaltung WHERE benutzername='$benutzername' ";
    $ergebnis = mysql_query($abfrage);

    if($row->passwort == $passwort) {
    while($daten=fetch_object($row)){
    $vergleich = $abfrage->passwort;
    }
    mysql_close($row);
    }


    mysql_close($db);

    if($vergleich == $passwort){
    echo"Fein";
    }else{
    echo"Raus";
    echo"$passwort";
    }


    ?>

    Könntet ihr mir bitte weiterhelfen, ich verzweifel bald!

  • #2
    PHP-Code:
    mysql_query($sqldaten);
    if(
    mysql_query($sqldaten)){
      ...

    Worked as designed. Du schreibst halt zwei Mal was in die Datenbank. Darum wird wohl auch dein Login nicht funktionieren.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo Peter,
      danke für deine schnelle Antwort.
      Wenn ich jetzt:
      mysql_query($sqldaten);
      lösche, speichert er die Daten nur noch einmal. Aber das Problem mit dem Login ist damit immer noch nicht gelöst, obwohl alle Daten richtig weitergegeben werden!

      Kommentar


      • #4
        Wie wäre es mit ein wenig Debugging?

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Wo soll auch $row herkommen, dass du für den Vergleich verwendest? Davon abgesehen baust du eine schöne Sicherheitslücke, weil den den Kontextwechsel nicht berücksichtigst. Werte, die du in SQL-Abfragen einfügst, müssen maskiert werden (in deinem Fall mit mysql_real_escape_string()).

          Kommentar


          • #6
            Okay, ich habe jetzt:
            "$row = mysql_fetch_object($ergebnis);" eingefügt, nur dann zeigt er mir:

            "Fatal error: Call to undefined function fetch_object() in C:\xampplite\htdocs\login_mit_Datenbank\pruefen.php on line 12"

            Tut mir leid, wenn ich mich im Moment nicht so geschickt anstelle!

            Kommentar


            • #7
              Die Fehlermeldung passt nicht zum gezeigten Code.

              Kommentar


              • #8
                Zitat von senger1985 Beitrag anzeigen
                "Fatal error: Call to undefined function fetch_object() in C:\xampplite\htdocs\login_mit_Datenbank\pruefen.php on line 12"
                Bei der mysql-Erweiterung, die du ja nutzt, heißt das mysql_fetch_object, fetch_object gibt es nur bei bei mysqli.

                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  <?php
                  include ('config2.php');
                  $benutzername= $_POST['benutzername'];
                  $passwort= md5($_POST['passwort']);


                  $abfrage = "SELECT passwort FROM benutzerverwaltung WHERE benutzername='$benutzername' ";
                  $ergebnis = mysql_query($abfrage);
                  $row = mysql_fetch_object($ergebnis);

                  if($row->passwort == $passwort) {
                  while($daten=mysql_fetch_object($row)){
                  $vergleich = $abfrage->passwort;
                  }
                  mysql_close($row);
                  }


                  mysql_close($db);

                  if($vergleich == $passwort){
                  echo"Fein";
                  }else{
                  echo"Raus";
                  }


                  ?>


                  Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\login_mit_Datenbank\pruefen.php on line 12

                  Warning: mysql_close() expects parameter 1 to be resource, object given in C:\xampplite\htdocs\login_mit_Datenbank\pruefen.php on line 15
                  Raus

                  Kommentar


                  • #10
                    Du kannst nicht automatisch davon ausgehen, dass Datenbankabfragen erfolgreich sind. Du musst immer prüfen, ob eine Datenbankabfrage fehlgeschlagen ist und entsprechende Maßnahmen treffen.

                    http://php.net/manual/en/function.mysql-error.php

                    Kommentar


                    • #11
                      @senger1985
                      Hast du dir überhaupt mal meinen Link angesehen? Insbesondere die Sache mit dem or die...?

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Sorry, ich steig da gerade gar nicht mehr durch und kritzen nur noch in dem Scrip rum!
                        Würdet ihr bitte so freundlich sein und mir das Script, mal komplettieren?

                        Kommentar


                        • #13
                          Alles klar!
                          Wenn man immer um 1000 Ecken denken muss, kann es ja gar nicht klappen!

                          Login funktioniert!

                          /*CLOSED*/

                          Kommentar

                          Lädt...
                          X