Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Loginseite spinnt

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Loginseite spinnt

    Ich habe mir eine Login Seite geschrieben mit PHP
    das Problem ist jetzt das wen ich den Benutzernamen max eingebe erhalte ich Passwort Falsch (was auch kommen soll weil kein Passwort da war) gebe ich jetzt aber flo ein kommt User existiert nicht.
    Der Code von der Verarbeitungsseite:
    PHP-Code:
        <?php
        error_reporting
    (E_ALL E_STRICT);
        
    ini_set("display_errors"1);
        
    //Config
        
        
    include 'config.php';
        
        
    //Verbinde zur DB
        
        
    $connect mysql_connect($db_host$db_username$db_passwd);
        if (!
    $connect)
        {
            die(
    'Kann nicht mit DB verbinden: ' mysql_error());
        }
        
    mysql_select_db($db_name);
        
        
    //überprüfen der nutzerdaten
        
    $username trim($_POST['username']);
        
    $pw trim($_POST['PW']);
           
    $result mysql_query("SELECT name, pw, id FROM G_users")
              or die (
    "MySQL-Error: " mysql_error());
        
           
    $row mysql_fetch_array ($result);
          if (
    $username == $row['name'])
          {
              if (
    $pw == $row['pw'])
            {
                  
    $id $row['id'];
                
    setcookie("Login",$id);
                echo 
    "<script type='text/javascript'>".
                    
    "window.location.replace('http://www.meine-adresse.de/privat.php?id=".$id."');".
                    
    "</script>";
            } else {
                echo 
    "Passwort ist FALSCH<br><a href='login.php'>Zurück</a>";
            }
             } else {
                  echo 
    "User Existiert Nicht<br><a href='login.php'>Zurück</a>";
            }
        
    ?>


  • #2
    Dein Code kann überhaupt nur funktionieren, wenn es nur einen Datensatz in der Datenbank gibt - schließlich wertest du nur einen einzigen Datensatz aus.

    Und der allgemeine Ratschlag für sowas lautet - werte Nutzername und Passwort schon im SQL-Statement in einer WHERE-Klausel aus, und ziehe dann aus der Anzahl der Ergebnisdatensätze den richtigen Schluss.
    (Die Unterscheidung zwischen falschem Usernamen und falschem Passwort hat man dann zwar nicht, wenn man das direkt so in einem Schritt macht - aber den falschen Usernamen explizit als Fehler auszuweisen, stellt sowieso u.U. einen zusätzlichen Angriffsvektor dar. Wenn du trotzdem Wert auf dieses Feature legst - dann frag in der Query nur nach dem Usernamen, und werte das Passwort in einem separaten Schritt aus.)

    Und warum du darin JavaScript nutzt, verstehe ich auch nicht.

    Kommentar


    • #3
      Mal davon abgesehen, dass das Passwort in Klarschrift in der DB steht, wie sieht das Formular dazu aus?

      Kommentar


      • #4
        Zitat von ChrisB Beitrag anzeigen
        Dein Code kann überhaupt nur funktionieren, wenn es nur einen Datensatz in der Datenbank gibt - schließlich wertest du nur einen einzigen Datensatz aus.

        Und der allgemeine Ratschlag für sowas lautet - werte Nutzername und Passwort schon im SQL-Statement in einer WHERE-Klausel aus, und ziehe dann aus der Anzahl der Ergebnisdatensätze den richtigen Schluss.
        (Die Unterscheidung zwischen falschem Usernamen und falschem Passwort hat man dann zwar nicht, wenn man das direkt so in einem Schritt macht - aber den falschen Usernamen explizit als Fehler auszuweisen, stellt sowieso u.U. einen zusätzlichen Angriffsvektor dar. Wenn du trotzdem Wert auf dieses Feature legst - dann frag in der Query nur nach dem Usernamen, und werte das Passwort in einem separaten Schritt aus.)

        Und warum du darin JavaScript nutzt, verstehe ich auch nicht.
        Danke werde ich machen

        //EDIT:
        hab ich gemacht
        bekomme jetzt aber immer einen Fehler
        und zwar: MySQL-Error: Unknown column 'flo' in 'where clause'
        PHP-Code:
         $result mysql_query("SELECT name, pw, id FROM G_users WHERE name = $username")
              or die (
        "MySQL-Error: " mysql_error());

           
        $row mysql_fetch_array ($result);
          if(
        mysql_num_rows($result)==0){
              echo 
        "User Existiert Nicht<br><a href='login.php'>Zurück</a>";
            } else { 
        Zitat von bandit600 Beitrag anzeigen
        Mal davon abgesehen, dass das Passwort in Klarschrift in der DB steht, wie sieht das Formular dazu aus?
        Code:
        <form method="post" action="login_v.php">
          <table width="573" border="0">
            <tr>
              <td width="85">Benutzername</td>
              <td width="478"><input type="text" name="username"></td>
            </tr>
            <tr>
              <td>Passwort</td>
              <td><input type="password" name="PW"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input name="anmeldung" type="submit" value="Login">
              <input type="reset" name="reset"></td>
            </tr>
          </table>
        </form>

        Kommentar


        • #5
          PHP-Code:
          $result mysql_query("SELECT `name`, `pw`, `id` FROM `G_users` WHERE `name` = '$username'")
                or die (
          "MySQL-Error: " mysql_error()); 

          Kommentar


          • #6
            Zitat von Cool Beitrag anzeigen
            hab ich gemacht
            bekomme jetzt aber immer einen Fehler
            und zwar: MySQL-Error: Unknown column 'flo' in 'where clause'
            Lerne bitte Grundlagen ...

            Kommentar


            • #7
              Zitat von bandit600 Beitrag anzeigen
              PHP-Code:
              $result mysql_query("SELECT `name`, `pw`, `id` FROM `G_users` WHERE `name` = '$username'")
                    or die (
              "MySQL-Error: " mysql_error()); 
              Danke jetzt gehts

              Kommentar

              Lädt...
              X