Loginscript die Zweite

  • Themenstarter Themenstarter ByeBye 152404
  • Beginndatum Beginndatum
B

ByeBye 152404

Hallo, ich bins mal wieder. :mad:

Hab mein Loginscript nun etwas umgeschrieben, in der hoffnung das es nun funktiomiert. Tut es aber nochimmer nicht. Er gibt mir immer aus das mein Passwort falsch wäre, hab mir sowohl das aus der Datenbank als auch das aus dem Post ausgeben lassen, gleicher md5 Hash. Auch die Verbindung zur Datenbank etc. steht da er den Usernamen findet und dort keine Mukken macht.

ERLEDIGT

Danke für eure Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
Sorry, hab den Fehler gefunden, hab die falsche Variabel verwendet.

Man bin ich blöde.

Sorry Jungs.
 
Nun hab ich Folgendes Problem, der User mit der ID 1 kann sich einloggen alle User die ich später registriert habe können sich aber nicht einloggen.

Das script gibt mir aus das der Benutzername nicht existiert.

PHP Code:
PHP:
<?php
session_start();

include("inc/configurations/mysql_main_config.php");     //Include der mySQL Daten
include("inc/configurations/login_config.php");          //Include der Login spezifischen Konfigurationen

  if (empty($_POST['login_userpassword']))             //Abfrage ob ein Passwort angegeben wurde
  {
    die("Sie haben kein Password angegeben. <a href='login.php'>Zurueck</a>");
  }
  if (empty($_POST['login_username']))                  //Abfrage ob ein Username eingegeben wurde
  {
    die("Sie haben keinen Benutzernamen Angegben. <a href='login.php'>Zurueck</a>");
  }
  /*Speichern von Daten in Variabelen*/
  $login_pass = $_POST['login_userpassword'];
  $login_name = $_POST['login_username'];

  /*mySQL Abfrage, auslesen der Userdatem*/
  $connection = mysql_connect("$db_server", "$db_user", "$db_password") or die(mysql_error());
  mysql_select_db("$db_name", $connection);
  $query = mysql_query("SELECT ID, Username, Userpassword, Rank FROM user") or die(mysql_error());
  $num = mysql_num_rows($query) or die(mysql_error());

  if ($num > 0)
  {
    while ($dsatz = mysql_fetch_assoc($query))
    {
      if ($login_name != $dsatz["Username"])                       //Vergleich des Usernamen, wen nicht flasch Programmabruch
      {
        die("Der von ihnen angegebene Benutzername ist leider nicht vorhanden. <a href='login.php'>Zurueck</a>");
      }
      if (md5($login_pass) != $dsatz["Userpassword"])             //Vergleichen der Passwoerter, wen nicht falsch Programmabruch
      {
        die("Das von ihnen angegebene Passwort ist leider flasch. <a href='login.php'>Zurueck</a>");
      }
      /*Schreiben der Session Varibalenem*/
      $_SESSION["user_id"] = $dsatz["ID"];
      $_SESSION["user_rank"] = $dsatz["Rank"];

      header ("Location: user_overview.php");                     //Seite die bei richtigem Login ausgegeben wird
    }
  }
  else
  {
    die("Es ist leider en Fehler aufgetreten wenden sich sich bitte an den <a mailto='".$admin_email."'>Administratoe</a>");
  }
?>
 
Na das ist doch klar :).
Du fragst alle Daten ab und vergleichst diese dann in der while-Schleife.
Wenn du einen anderen User als den 1. hast, wird ja schon im ersten Durchlauf
PHP:
if ($login_name != $dsatz["Username"])                       //Vergleich des Usernamen, wen nicht flasch Programmabruch
      {
        die("Der von ihnen angegebene Benutzername ist leider nicht vorhanden. <a href='login.php'>Zurueck</a>");
      }
(hier um genau zu sein)
das Script komplett unterbrochen -> [phpf]die[/phpf]!

An deiner Stelle würde ich die Überprüfung gleich schon in der MySQL Abfrage machen:
PHP:
<?php
session_start();

include("inc/configurations/mysql_main_config.php");     //Include der mySQL Daten
include("inc/configurations/login_config.php");          //Include der Login spezifischen Konfigurationen

  if (empty($_POST['login_userpassword']))             //Abfrage ob ein Passwort angegeben wurde
  {
    die("Sie haben kein Password angegeben. <a href='login.php'>Zurueck</a>");
  }
  if (empty($_POST['login_username']))                  //Abfrage ob ein Username eingegeben wurde
  {
    die("Sie haben keinen Benutzernamen Angegben. <a href='login.php'>Zurueck</a>");
  }
  /*Speichern von Daten in Variabelen*/
  $login_pass = $_POST['login_userpassword'];
  $login_name = $_POST['login_username'];

  /*mySQL Abfrage, auslesen der Userdatem*/
  $connection = mysql_connect("$db_server", "$db_user", "$db_password") or die(mysql_error());
  mysql_select_db("$db_name", $connection);
  $query = mysql_query("SELECT ID, Username, Userpassword, Rank FROM user WHERE Username = '".$login_name."'") or die(mysql_error());
  $num = mysql_num_rows($query) or die(mysql_error());

  if ($num > 0)
  {
  	$dbsatz = mysql_fetch_assoc($query);
    if (md5($login_pass) != $dsatz["Userpassword"])             //Vergleichen der Passwoerter, wen nicht falsch Programmabruch
    {
      die("Das von ihnen angegebene Passwort ist leider flasch. <a href='login.php'>Zurueck</a>");
    }
    /*Schreiben der Session Varibalenem*/
    $_SESSION["user_id"] = $dsatz["ID"];
    $_SESSION["user_rank"] = $dsatz["Rank"];
     header ("Location: user_overview.php");                     //Seite die bei richtigem Login ausgegeben wird
  }
  else
  {
    die("Es ist leider en Fehler aufgetreten wenden sich sich bitte an den <a mailto='".$admin_email."'>Administratoe</a>");
  }
?>

So zum Beispiel :)

Falls du nicht zwischen Passwort und Username Abbruch unterscheiden willst kannst du auch beides gleichzeitig machen:
PHP:
$query = mysql_query("SELECT ID, Username, Userpassword, Rank FROM user WHERE Username = '".$login_name."' AND Userpassword = '".md5($login_pass)."'") or die(mysql_error());

Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück