Finde denn Fehler im Code nicht kann mich nicht einlogen.

deinpapa

Mitglied
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:
<?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>';
    }
  }
  ?>
 
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.
 
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');
 
Zuletzt bearbeitet:
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.
 
... 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
 
Also hier ist der ganze code:
PHP:
<?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>
 
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:
$password = md5($password);

Wo wirdn da das Passwort gepostet?
 

Neue Beiträge

Zurück