• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wieso funktioniert der Login nicht ?

Hansii

Mitglied
Hallo.

Habe als Beispiel (Benutzername : test, Passwort : test). Jetzt soll man sich hier einloggen können : Login

Wenn man aber jetzt beides richtig eingibt, dann kommt trotzdessen "Anmeldung nicht erfolgreich".

PHP-Code :

PHP:
<?php
session_start ();
?>


<?php
mysql_connect ("Localhost", "Benutzername", "Passwort")
  or die ("Verbindung kann nicht hergestellt werden.");
  
mysql_select_db ("Datenbank")
  or die ("Die Datenbank konnte nicht gefunden werden.");
  
$username = $_POST["username"];
$passwort = md5($_POST["password"]);

$abfrage = "SELECT username, passwort FROM Tabelle WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo "Login erfolgreich. <br> <a href=\"aktuell.php\">Aktuelles.</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
    }
?>

Hier wird ja erst die Verbindung zur MySQL Datenbank aufgenommen. Dann wird geschaut, ob der Benutzername mit dem PW vorhanden ist. Dann kommt der entsprechende Echo Befehl.

Hier ist doch alles richti, oder ? Ich glaube, dass ich an alles gedacht habe, PW entschlüsseln, Username und PW prüfen, ...

Danke im Voraus
 
Das sind immer so kleine Fehler, die ich mache. Wie verhindert man dass ?

Jetzt habe ich den Code so :


PHP:
 <?php
session_start ();
?>


<?php
mysql_connect ("Localhost", "Benutzername", "Passwort")
  or die ("Verbindung kann nicht hergestellt werden.");
  
mysql_select_db ("Datenbank")
  or die ("Die Datenbank konnte nicht gefunden werden.");
  
$username = $_POST["username"];
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT username, passwort FROM Tabelle WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo "Login erfolgreich. <br> <a href=\"aktuell.php\">Aktuelles.</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
    }
?>

Trotzdessen funktioniert es nicht, jetzt sind alle $password = $passwort...
 
reicht dann das :

PHP:
var_dump ($row);

Wenn nicht, woher weiß ich denn, was darein muss.

Ob die PW'S über einstimmen wird doch hier geprüft :

PHP:
if($row->passwort == $passwort)
 
Ob die PW'S über einstimmen wird doch hier geprüft :[/PHP]

Natürlich prüfst du das, aber offensichtlich schlägt die Prüfung ja fehl, sonst würde ja der richtige Text erscheinen.

Darum wäre es jetzt interessant zu wissen, was denn in $row->passwort so drin steht bzw. ob überhaupt etwas drin steht, oder möglicherweise das SQL-Statement schon einen Fehler aufweist.
 
Ich würde, auch wenn das nichts mit deinem eigentlichen Problem zu tun hat, die Usernamensabfrage im SQL-Statement nicht per "like" sondern per "=" machen. Ansonsten könnte man sich unter Verwendung von Platzhaltern auch mit einem nicht vorhandenen Benutzernamen anmelden.
 
Ok. Dass mit dem "=" statt "like" ist eine gute Idee.

Wie bekomme ich denn jetzt mein Problem gelöst ? Wie finde ich raus, was in $row drinsteht ?

Danke


PS : Demnächst werde ich langsammer Programmieren, dann sollten weniger Fehler drinne sien :D
 
Wie bekomme ich denn jetzt mein Problem gelöst ? Wie finde ich raus, was in $row drinsteht ?


PHP:
print_r($row);

oder

PHP:
var_dump($row);

PS : Demnächst werde ich langsammer Programmieren, dann sollten weniger Fehler drinne sien
icon_biggrin.gif.pagespeed.ce.g3F8dN-bDO.gif
Du sollst nicht langsamer programmieren. Du sollst wissen was du programmierst.
 
Ist der Fehler hier ? Sonst hier ?

Registrieren.php :


PHP:
<?php

$anrede = $_POST["anrede"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
$email = $_POST["email"];
$username = $_POST["username"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];
$einverstanden = $_POST["einverstanden"];

mysql_connect ("Localhost", "Benutzername", "Passwort")
  or die ("Verbindung kann nicht hergestellt werden.");

mysql_select_db ("Datenbank")
  or die ("Datenbank kann nicht gefunden werden.");

if ($passwort != $passwort2)
  {
  echo "Die Passwörter stimmen nicht überein. <a href='registrieren.html'>Zurück.</a>";
  exit;
  }

$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM Tabelle WHERE username LIKE '$username'") or die ("Fehler beim überprüfen des Benutzernamens");
$menge = mysql_num_rows($result);

if ($menge == 0)
  {
  $eintrag = "INSERT INTO Tabelle (anrede, vorname, name, email, username, passwort, einverstanden) VALUES ('$anrede', '$vorname', '$name', '$email', '$username', '$passwort', '$einverstanden')";
  $eintragen = mysql_query($eintrag);


  if ($eintragen == true)
    {
    echo "Benutzername <b>$username</b> wurde erstellt. <a href='login.html'>Login.</a>";
    }
  else
    {
    echo "Fehler beim Speichern des Benutzernamens. <a href='registrieren.html'>Zurück.</a>";
    }

  }
else
  {
  echo "Benutzername schon vorhanden. <a href='registrieren.html'>Zurück.</a>";
  }

?>
 
Eigene Blödheit bzw. Fehler ! Tatsächlich war das auf 30 beschränkt. Jetzt habe ich das auf "Text - unbegrenzt" geändert und es klappt.

Danke :D:D:
 
Zurück
Oben