tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
607
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    deinpapa deinpapa ist offline Mitglied Bronze
    Registriert seit
    May 2006
    Beiträge
    41
    Hallo Leute.

    Ich habe bei meinem Login Code ein Problem da egal was ich alls Password eingebe immer kommt falsches Password auch wenn es eigentlich richtig ist.

    Kann mir da einer weiter helfen. Ich habe schon einiges versucht aber finde einfach nicht denn fehler, ist ein md5 Password mit SQL.

    Hier der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    <?php
      }elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php">Zurück</a></p>';
      }elseif(!$_POST['password'] || $_POST['password'] == "") {
        echo '<form action="index.php" method="post">';
        echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
       echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
       echo '<input type="submit" name="zurueck" value="Zurück">';
       echo '</p>';
        echo '</form>';
     }else{
        $password = md5($password);
        $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
        $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zurück</a></p>');
        if($password != $result['pass']){
          echo '<form action="index.php" method="post">';
          echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
          echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
          echo '<input type="submit" name="zurueck" value="Zurück"></p>';
          echo '</form>';
          die;
        }else{
          $user = $result['user'];
          session_register('user');
          echo '<p align="center">LogIn erfolgreich! :-)<br><br><a href="log.php">Weiter</a></p>';
        }
      }
      ?>
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.520
    Der Fehler scheint nicht im Code zu liegen, sondern eher daran, wie dein Passwort in der DB liegt. Wie sieht der entsprechende Datenbank-Eintrag aus? Kannst ruhig auch ein Passwort festlegen, was nicht so sicher ist für den Test.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    deinpapa deinpapa ist offline Mitglied Bronze
    Registriert seit
    May 2006
    Beiträge
    41
    Also das Passwort ist in der Tabelle "users" und im Datensatz "pass"
    Der Username ist in gleicher Tabelle die das Passwort und denn Usernamen findet das Login script.


    -- Tabellenstruktur für Tabelle `users`
    --

    CREATE TABLE `users` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `user` varchar(20) NOT NULL default '',
    `pass` varchar(50) NOT NULL default '',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

    --
    -- Daten für Tabelle `users`
    --

    INSERT INTO `users` VALUES (1, 'test', '6ae27aa9ea262g6gbf4d13d4585799a8');
    Geändert von deinpapa (01.08.07 um 20:45 Uhr)
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.520
    Kann es sein, das deine PHP-Funktion md5() die Hex-Buchstaben als Großbuchstaben ausgibt? Vielleicht solltest du vor dem Vergleich eine einheitliche Form der Passwörter schaffen, z.B. mit strtolower oder strtoupper für beide Passworte.

    Ansonsten kann ich dir für das Debugging nur empfehlen, mal das eingegebene und das in der SQL-Tabelle liegende Passwort untereinander auszugeben und zu vergleichen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    Comenius Tutorials.de Gastzugang
    ... Oder den ganzen PHP-Code zu posten.
    Wenn es schon mit einem ELSEIF beginnt, lässt dass ja nur darauf schließen, dass davor noch mehr sein muss...

    Vielleicht hast du irgednwo einen Dreher, oder Denkfehler in IF-Anweisungen

    Poste einfach mal das komplette Script, dann seh´n wir weiter

    Gruss
    Commi
     

  6. #6
    deinpapa deinpapa ist offline Mitglied Bronze
    Registriert seit
    May 2006
    Beiträge
    41
    Also hier ist der ganze code:
    PHP-Code:
    <?php
    session_start
    ();
    require(
    "connect.inc.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>LogIn zum Adminbereich</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <?php if(!isset($_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post">
    <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <b>Bitte erst anmelden</b>
          </td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Benutzername</td>
          <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?></td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Passwort</td>
          <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
        </tr>
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <input type="submit" name="submit" value="Anmelden" class="button">
          </td>
        </tr>
      </table>
      </form>
      <?php
      
    }elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo 
    '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php">Zurück</a></p>';
      }elseif(!
    $_POST['password'] || $_POST['password'] == "") {
        echo 
    '<form action="index.php" method="post">';
        echo 
    '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
       echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
       echo 
    '<input type="submit" name="zurueck" value="Zurück">';
       echo 
    '</p>';
        echo 
    '</form>';
     }else{
        
    $password md5($password);
        
    $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
        
    $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zurück</a></p>');
        if(
    $password != $result["pass"]){
          echo 
    '<form action="index.php" method="post">';
          echo 
    '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
          echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
          echo 
    '<input type="submit" name="zurueck" value="Zurück"></p>';
          echo 
    '</form>';
          die;
        }else{
          
    $user $result['user'];
          
    session_register('user');
          echo 
    '<p align="center">LogIn erfolgreich! :-)<br><br><a href="log.php">Weiter</a></p>';
        }
      }
      
    ?>
      </body>
      </html>
     

  7. #7
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    Versuch mal einfach den geposteten Wert auszugeben, mit die($password).

    Oder versuch auch mal, einfach erstmal ohne md5 einzuloggen.
    Wie viele Zeichen erlaubt deine Spalte in der Datenbank für das Passwort?



    PHP-Code:
    $password md5($password); 
    Wo wirdn da das Passwort gepostet?
     
    Nein, ich bin kein Programmier-könig. Aber Spaß macht es trotzdem!

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 20.05.09, 19:57
  2. Antworten: 13
    Letzter Beitrag: 18.10.08, 18:33
  3. kann den Fehler nicht Finden, im code
    Von ZaMpTi im Forum PHP
    Antworten: 2
    Letzter Beitrag: 13.07.06, 06:48
  4. Finde den fehler nicht im Code
    Von Sealtuagn im Forum PHP
    Antworten: 7
    Letzter Beitrag: 26.07.05, 12:44
  5. script für Datenbankeintrag/abfrage klappt nicht - finde den Fehler nicht
    Von germanius im Forum Relationale Datenbanksysteme
    Antworten: 10
    Letzter Beitrag: 06.06.04, 14:49