Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript zum checken ob ein Username bereits in der DB existiert, funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Skript zum checken ob ein Username bereits in der DB existiert, funktioniert nicht

    Hallo alle miteinander! ich versuche gerade ein simples (unsicheres) Skript zum registrieren auf einer Todo-Website zu schreiben. Das registrieren klappt auch (Ich habe keine Hashes oder paramBinding benutzt), das kontrollieren, ob es den User gibt, allerdings nicht..

    Folgender Code:

    PHP-Code:
    <?php
        
    try {
        
    $db = new PDO("mysql:dbname=todo;host=localhost",
                            
    "root",
                            
    "");
        }catch (
    PDOException $e) {
            echo 
    "Fehler: " htmlspecialchars($e->getMessage());
            exit();
      }



        if (isset(
    $_POST["username"]) && isset($_POST["password"]))
        {

        
    $username $_POST["username"];
        
    $password $_POST["password"];
        
    $sql "INSERT INTO user VALUES ('$username', '$password');";

        
    $stmt "SELECT username FROM user WHERE username ='".$username."';";
        
    $db->exec($stmt);


            if(
    $stmt->rowCount() > 0){
                echo 
    "Existiert";
            }else {
                echo 
    "Existiert nicht";
                 
    $db->exec($sql);
            }

        }

        
    ?>

  • #2
    Das du dadruch eine riesige Lücke hast, weißt du ja schon. Bitte mache was dagegen, ist nicht wirklich mehr Aufand. Siehe Link unten.

    PHP-Code:
    $db->exec($stmt); 
    Zuweisung fehlt. Derzeit wird der Rückgabewert verschmissen.

    Siehe hier: https://php-de.github.io/jumpto/pdo/...red-statements

    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Zitat von hausl Beitrag anzeigen
      Das du dadruch eine riesige Lücke hast, weißt du ja schon. Bitte mache was dagegen, ist nicht wirklich mehr Aufand. Siehe Link unten.



      Zuweisung fehlt. Derzeit wird der Rückgabewert verschmissen.

      Siehe hier: https://php-de.github.io/jumpto/pdo/...red-statements
      Ja, das ganze Gebiet rund um Sicherheit muss ich mir gründlichst angucken. Aber was ist mit "Zuweisung fehlt" gemeint? Ich habe eine Zeile darüber doch definiert, was $stmt sein soll, oder was meinst du?

      Kommentar


      • #4
        Schalte das Error_reporting ein, dann bekommst du Fehler angezeigt.

        https://php-de.github.io/jumpto/faq/#debugging

        $stmt ist ein String, du musst ->rowCount() auf das Rückgabeobjekt von db->exec() anwenden.

        Kommentar


        • #5
          Zitat von jonas3344 Beitrag anzeigen
          Schalte das Error_reporting ein, dann bekommst du Fehler angezeigt.

          https://php-de.github.io/jumpto/faq/#debugging

          $stmt ist ein String, du musst ->rowCount() auf das Rückgabeobjekt von db->exec() anwenden.
          Ich blicks nicht..Was ist denn der Rückgabewert? Bzw. wie müsste mein Code dann aussehen? Nach ca. 1h Stackoverflow etc. finde ich nichts, außer Code, der meinem sehr ähnlich ist..

          https://websitebeaver.com/php-pdo-vs-mysqli

          Unter "Get Number of Affected Rows" steht auch nur:
          $stmt->rowCount(); ..

          Kommentar


          • #6
            error_reporting angeschaltet?

            Debugging-Enführung gelesen?

            Mal
            PHP-Code:
            var_dump($stmt); 
            gemacht und nachgeschaut was da so drin ist?

            Mal die Doku zu $pdo->exec() angeschaut?
            http://php.net/manual/de/pdo.exec.php

            Kommentar


            • #7
              Zitat von jonas3344 Beitrag anzeigen
              error_reporting angeschaltet?

              Debugging-Enführung gelesen?

              Mal
              PHP-Code:
              var_dump($stmt); 
              gemacht und nachgeschaut was da so drin ist?

              Mal die Doku zu $pdo->exec() angeschaut?
              http://php.net/manual/de/pdo.exec.php
              Ja, der normale Error ist:

              Fatal error: Uncaught Error: Call to a member function rowCount() on string in C:\xampp\htdocs\mat\register.php:76 Stack trace: #0 {main} thrown in C:\xampp\htdocs\mat\register.php on line 76


              und var_dump ergibt halt den string von $stmt.. ich weiß nun aber trotzdem nicht, was ich ändern soll.

              Kommentar


              • #8
                Doku lesen, dort hats ein Beispiel drin, das du leicht anpassen kannst. Und Grundlagen lernen, das kann ich nicht für Dich.

                Kommentar


                • #9
                  Wozu überhaupt die Mühe mit Username und Password, wenn das Ding an sich unsicher ist? Da kannst du doch gleich aufs Passwort verzichten.

                  Das ist doch so, als würde man in eine Tür ein neue Schloss einbauen, das aber niemals abgeschlossen wird. Was ist die Sinnhaftigkeit davon?

                  Kommentar


                  • #10
                    Zitat von jonas3344 Beitrag anzeigen
                    Doku lesen, dort hats ein Beispiel drin, das du leicht anpassen kannst. Und Grundlagen lernen, das kann ich nicht für Dich.
                    Anstatt mir eben den Fehler zu "korrigieren".. ich sitze an dem Drecksfehler über eine Stunde. Die Doku lese ich durchgehend.. aber danke für deine krasse Hilfe.

                    Kommentar


                    • #11
                      Zitat von hellbringer Beitrag anzeigen
                      Wozu überhaupt die Mühe mit Username und Password, wenn das Ding an sich unsicher ist? Da kannst du doch gleich aufs Passwort verzichten.

                      Das ist doch so, als würde man in eine Tür ein neue Schloss einbauen, das aber niemals abgeschlossen wird. Was ist die Sinnhaftigkeit davon?
                      Zum üben! Das ist nichts was veröffentlicht werden soll, bevor ich an die Sicherheit gehe, möchte ich es erst einmal überhaupt hinkriegen...Das ist eine kleine Sache, die laut euch ganz einfach zu beheben ist, die mich seit 1-2 Stunden in den Wahnsinn treibt. Man könnte alleine schon aus Mitleid, einfach die Lösung posten, statt auf mir rum zu hacken ey..

                      Kommentar


                      • #12
                        Nützt Dir überhaupt nichts wenn ich Dir hier den Fehler vorkaue.

                        Kommentar


                        • #13
                          Zitat von jonas3344 Beitrag anzeigen
                          Nützt Dir überhaupt nichts wenn ich Dir hier den Fehler vorkaue.
                          Alles klar, ich bin hier definitiv falsch. Ich werds woanders versuchen, lebt wohl.

                          Kommentar


                          • #14
                            Zitat von MrHappy Beitrag anzeigen

                            Alles klar, ich bin hier definitiv falsch. Ich werds woanders versuchen, lebt wohl.
                            Kommunikationsunfähigkeit wohin das Auge blickt. "Merken Sie was?" ...

                            Kommentar


                            • #15
                              Das ist eine kleine Sache,
                              Finde ich auch immer nett.

                              Aber das du uns verlässt ist wohl noch das Beste an diesem Faden.

                              Kommentar

                              Lädt...
                              X