Login script Fehlerhaft

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

  • Login script Fehlerhaft

    Hallo, ich bin ein ganz unerfahrener Webdesigner :-D also seit 3 Tagen. Ich hangel mich seitdem durch youtube tutorials was auch ganz gut bis jetzt geklappt hat. Ich habe einen Login bereich programmiert aber der ist wohl fehlerhaft. er sagt mir "mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\loginn.php on line 19"

    Ich weiß das wohl der Fehler bei der vorigen Zeile ist aber nicht welcher.
    Weiter habe ich Probleme mit der Datenbank. wenn ich mich versuche einzuloggen sagt er immer benutzer nicht vorhanden. Oder ist das ein zusammenhängender Fehler?

    Hier mal das Formular!
    HTML-Code:
    <html>
    <head>
    	<title>Login</title>
        <meta name="keywords" content="">
        <meta name="description" content="">
        
        <style type="text/css">
    	
    	
    	</style>
    </head>
    <body>
    	<div id="loginform">
        <form action="loginn.php" method="post">
        Benutzername:<br>
        <input type="text" name="user"><br>
        Passwort:<br>
        <input type="password" name="password"><br>
        <input type="submit" name="login" value="Login">
    
    
    
    
    </body>
    
    </html>
    Und hier das script!
    PHP-Code:
    <?php


    $benutzerfeld 
    $_POST["user"];
    $passwortfeld $_POST["password"];
    $loginbutton $_POST["login"];


    if(
    $loginbutton)
    {
        if(
    $benutzerfeld && $passwortfeld)
        {
                
    //connect zur datenbank
                
    $connect mysql_connect("localhost""root""");
                
    mysql_select_db("mitglieder");
                
                
    $query mysql_query("SELECT * FROM userdaten WHERE benutzer=´{$benutzerfeld}´");
                
                
    $num mysql_num_rows($query);
                
                if(
    $num!=0)
                {
                    While (
    $row mysql_fetch_assoc($query))
                    {
                        
    $dbbenutzer $row["benutzer"];
                        
    $dbpasswort $row ["password"];
                    }
                    if(
    $dbbenutzer==$benutzerfeld && $dbpasswort==$passwortfeld)
                    {
                        echo 
    "Login erfolgreich";
                    }
                    
                    else
                        echo 
    "Ihr Daten wurden nicht gefunden";
                    
                    
                }
                else
                    echo 
    "Benutzer nicht vorhanden!";
        
        }
        else
            echo 
    "Bitte f&uuml;llen Sie alle Felder aus!";
    }


    ?>
    Vielen Dank!

  • #2
    PHP-Code:
    $query mysql_query("SELECT * FROM userdaten WHERE benutzer='$benutzerfeld'"); 
    Peter

    PS: Informiere dich mal über eine saubere Fehlersuche
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Oh vielen Dank.
      Ich probiere es gleich mal aus.

      Kommentar


      • #4
        Hau die Tutorials weg.

        mysql_* Funktionen sind veraltet und sollten nicht mehr verwendet werden.

        Dein Script ist anfällig für SQL-Injections. Eine der am meisten ausgenützten Sicherheitslücken.

        Kommentar


        • #5
          @ Peter danke funktioniert wunderbar

          @h3ll

          Welche möglichkeiten habe ich dort denn?

          Kommentar


          • #6
            Was meinst du mit "dort"?

            Kommentar


            • #7
              anstelle von mysql

              Kommentar


              • #8
                mysqli oder PDO.

                Kommentar


                • #9
                  So da mir hier schonmal so nett weitergeholfen worden ist, komme ich direkt mit der nächsten frage an. Dann sollte meine laien hp auch fertig sein

                  Habe mir gedacht anstatt echo " Login erfolgreich"; wie ersten teil, dass es ja auch schön wäre wenn man alles richtig eingeben hat, direkt zu einer anderen html seite geleitet wird. Bei mir wars die nutzer.html. nur leider kommt da wieder diese Fehlermeldung mit dem boolean ... wie oben. auch die gleiche zeile also 21.
                  kann mir jemand sagen, mal von diesen sql injections, wo ich mich noch reinlesen muss, ob das so überhaupt funktionieren könnte natürlich dann wenn der fehler behoben ist?

                  Hier mal der neue von mir verunstaltete code :-)

                  PHP-Code:
                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

                  <?php


                  $benutzerfeld 
                  $_POST["user"];
                  $passwortfeld $_POST["password"];
                  $loginbutton $_POST["login"];


                  if(
                  $loginbutton)
                  {
                      if(
                  $benutzerfeld && $passwortfeld)
                      {
                              
                  //connect zur datenbank
                              
                  $connect mysql_connect("localhost""root""");
                              
                  mysql_select_db("mitglieder");
                              
                              
                  $query mysql_query("SELECT * FROM userdaten WHERE benutzer='$benutzerfeld'");  
                              
                              
                  $num mysql_num_rows($query);
                              
                              if(
                  $num!=0)
                              {
                                  While (
                  $row mysql_fetch_assoc($query))
                                  {
                                      
                  $dbbenutzer $row["benutzer"];
                                      
                  $dbpasswort $row ["password"];
                                  }
                                  if(
                  $dbbenutzer==$benutzerfeld &&       $dbpasswort==$passwortfeld)
                                  {
                                      echo 
                  "<meta http-equiv=\"refresh\" content=\"0; URL=nutzer.htm\">";

                                  }
                                  
                                  else
                                      echo 
                  "Ihr Daten wurden nicht gefunden";
                                  
                                  
                              }
                              else
                                  echo 
                  "Benutzer nicht vorhanden!";
                      
                      }
                      else
                          echo 
                  "Bitte f&uuml;llen Sie alle Felder aus!";
                  }


                  ?>
                  vielen dank

                  Kommentar


                  • #10
                    Du bist für mich der dritte Nutzer, der in den letzten paar Tagen mit grob diesem Code in diversen Foren aufgeschlagen ist. Was ist das für ein seltsames Tutorial, das ihr da alle nutzt? Das ist – wie bereits erwähnt – qualitativ äußerst schlecht.

                    nur leider kommt da wieder diese Fehlermeldung mit dem boolean
                    Das bedeutet, dass die SQL-Query fehlgeschlagen ist.

                    - Standardantwort zu MySQL Debuggen - PHP Forum: phpforum.de

                    Eine Sammlung an Tutorials findest du etwa hier:

                    - http://www.php.de/php-einsteiger/489...nsammlung.html

                    Kommentar


                    • #11
                      hier mal der link zum tutorial.. natürlich mit eigenen interpretationen.... HTML & PHP - Login mit Datenbank (Teil 1) - YouTube

                      habe nun grad keine lust die links durch zu lesen, geschweige denn das ich sie verstehen würde.. zu spät.. zu viel alkohol und so

                      verzeiht mir ich bin student :-P

                      Aber so wirklic geholfen hat mir das nicht ausser das der link wohl dooof ist

                      Ein freund von mit meinte das ich wohl den pfad falsch aufgerufen habe.. aber es gab in dieser datei nur die nutzer.html. Dann habe ich rumgebastelt mit ../ und ./ und was weiß ich noch alles.. dann kam irgendwann wieder dieses boolean fehlher etc.

                      Kommentar


                      • #12
                        Besoffen posten kannst du meinetwegen bei Facebook o.ä.
                        *close*
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar

                        Lädt...
                        X