Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum gibt es nichts aus

Einklappen

Neue Werbung 2019

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

  • Warum gibt es nichts aus

    Hallo,

    ich habe ein problem...
    wenn ich testen will ob der username schon in der Datenbank ist.

    der code (als test)#
    PHP-Code:
                $ergebis mysql_query("SELECT * FROM user WHERE username = " $_POST["User"]);
          if (
    mysql_num_rows($ergebis) == 0)  {
          echo 
    "ok den namen gibt es nicht";
          }
          else {
          echo 
    "es gibt den usernamen";
          } 
    ich bekomme aber die Fehlermeldung:
    mysql_num_rows() expects parameter 1 to be resource, boolean given (in diesem fall die 2. Zeil)


  • #2
    Weil dein Query einen Fehler wirft (fehlende Anführungszeichen um den String für MySQL zu markieren).

    Kommentar


    • #3
      $ergebis = mysql_query("SELECT * FROM user WHERE username = '". $_POST['User'] ."' ");

      probiers mal damit und am besten nutzt du mysqli oder PDO aber das wird man dir schon mehrmals gesagt haben und dir scheints egal zu sein :P

      zudem ists sehr unsicher $_POST['User'] einfach so in die Abfrage rein zu packen.

      Kommentar


      • #4
        String müssen gequoted werden.
        PHP-Code:
        SELECT FROM user WHERE username 'Hans' 
        Die mysql_* Erweiterung ist veraltet, es wird stark davon abgeraten sie zu verwenden. Zudem ist deine Query gegen SQL-Injections anfällig. Durch einen Wechsel zur mysqli_* Erweiterung oder PDO, und den konsequenten Einsatz von Prepared Statements, kannst du beide Punkte auf einmal abhaken. (Übrigens auch das Quoting-Problem, also gleich 3 Sachen abgehakt.)

        $ergebis da fehlt ein 'n'
        Relax, you're doing fine.
        RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

        Kommentar


        • #5
          Wenn du MySQL/PHP die chance gibst, dann sagt es dir sogar was nicht passt, einfach mal mysql_error() abfragen!

          Sonst:

          Lesestoff zur SQL-Injection: http://php-de.github.io/jumpto/sql-injection/

          und dann noch, SELECT * ist pfui: http://php-de.github.io/jumpto/code-smells/#select-

          LG
          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


          • #6
            Zitat von VPh Beitrag anzeigen
            String müssen gequoted werden.


            $ergebis da fehlt ein 'n'
            ich weiß war aber zu faul
            but btw msqlyi? diese script ist ca. 1 jahr alt ich habe es bloß wieder gefunden und wollte an ihm weiter arbeiten

            Kommentar


            • #7
              Zitat von Kado Beitrag anzeigen
              PHP-Code:
              $ergebis mysql_query("SELECT * FROM user WHERE username = '"$_POST['User'] ."' "); 
              ... probiers mal damit ...
              Nein, das soll er so nicht "probieren", denn das ist die aller schlechteste Variante ...

              zudem ists sehr unsicher $_POST['User'] einfach so in die Abfrage rein zu packen.
              ... wie du selbst dann auch feststelltst.

              Und PHP-Code bitte immer in Code-Tags geben.
              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


              • #8
                Zitat von Schlechtse09 Beitrag anzeigen
                ich weiß war aber zu faul


                Dreh mal zu Beginn deine Scriptes das error_reporting auf, dann hättest du zu dem fehlenden n auch schon eine Notce bekommen etc..

                PHP-Code:
                ini_set('display_errors',1); 
                error_reporting(-1); 
                Zitat von Schlechtse09 Beitrag anzeigen
                but btw msqlyi?
                Dein Script ist unsicher! Siehe Links oben, man kann dir in der Form eine Daten auslesen löschen etc.. Das gehört behoben.
                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


                • #9
                  Dein Script ist unsicher! Siehe Links oben, man kann dir in der Form eine Daten auslesen löschen etc.. Das gehört behoben.
                  und anlegen was unter umständen dazu genutzt werden kann XSS zu betreiben. von anderen teufeleien fangen wir gar nicht erst an zu reden...
                  Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                  Kommentar


                  • #10
                    ok
                    ist mysqli sicherer wie gesagt das script ist alt
                    den dan würde ich erewigen auf mysqli umzusteigen
                    könntet ihr mir da ein Tutorial empfehlen währe Net

                    Kommentar


                    • #11
                      ok
                      ist mysqli sicherer wie gesagt das script ist alt
                      den dan würde ich erewigen auf mysqli umzusteigen
                      könntet ihr mir da ein Tutorial empfehlen währe Net
                      Dafür bemühst du dich, etwas verständlicher zu formulieren und mit Satzzeichen nicht so zu geizen, danke!

                      Grundlagen: http://www.peterkropff.de/site/php/m...grundlagen.htm
                      Prep. Statments: http://www.peterkropff.de/site/php/m...hoden_stmt.htm
                      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


                      • #12
                        http://www.peterkropff.de/site/php/mysqli.htm
                        Wie gesagt, Prepared Statements dann sind SQL-Injections kein Ding mehr.
                        Relax, you're doing fine.
                        RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                        Kommentar


                        • #13
                          Zitat von Schlechtse09 Beitrag anzeigen
                          ok
                          ist mysqli sicherer wie gesagt das script ist alt
                          den dan würde ich erewigen auf mysqli umzusteigen
                          könntet ihr mir da ein Tutorial empfehlen währe Net
                          http://www.peterkropff.de/site/php/mysqli.htm

                          Sicher ist das allein nicht, du musst schon escapen oder prepared statements verwenden, aber das sollte in dem Tutorial alles erklärt werden. Und verbesser mal schleunigst deine rechtschreibung...
                          Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                          Kommentar


                          • #14
                            Ok ich habe jetzt mit mysqli angefangen.

                            Ich habe das tutorial befolgt,

                            PHP-Code:
                            <?php
                            //Verbindung zur Datenbank
                            $db = @new mysqli('localhost''root''''logins');

                            //Testen ob verbindung aufgebaut wurde
                            if (mysqli_connect_errno() == 0)
                             
                              {
                              
                            $user $_POST['User'];
                              
                            $password $_POST['pw'];
                              
                              
                             
                            $sqllogin "SELECT `Username`, `Password` FROM `user` where Username like `" "$user"`"//geändert !!!
                              
                            $logindaten $db->prepare$sqllogin );
                              
                            $logindaten -> execute();
                              
                            $logindaten -> bind_result$un,$pw );
                              
                              if (
                            $user == $un AND $password == $pw)
                                
                                {
                                echo 
                            "erfolgreich";
                                }
                                
                              else
                                
                                {
                                echo 
                            "Falscher Username Oder Passwort";
                                }
                              
                              }
                              
                            else

                              {
                              echo 
                            "Connection to DB failed.";
                              }
                              
                            $db->close();
                            ?>
                            aber es gibt mir das aus:
                            "Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\login.php on line 22 (zeile 15)"

                            Kommentar


                            • #15
                              Alle Nase lang kommt hier die gleiche Frage. Dann testet halt alle Inhalte ab, die Ihr zuweist.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X