PHP Skriptfehler?

Ich habe vor wenigen Stunden angefangen, mein Wissen im Bereich Website-Entwicklung zu erweitern. Mit CSS und HTML5 bin ich zur Zeit schon sehr vertraut. Ich will aber, dass meine Website interaktiv wird. JavaScript fand ich sehr kompliziert, weshalb ich mit PHP angefangen habe. Jetzt habe ich ein Loginformular geschrieben, finde aber im Code den Fehler nicht. Könnt ihr mir helfen?

Code:

<?php
  session_start();

  $verhalten = 0;

  if (!isset ($_SESSION["username"]) and !isset($_GET["page"])) {
    $verhalten = 0;
  }

  if ($_GET["page"] == "log") {
    $user = $_POST["user"]
    $passwort = $_POST["passwort"]

    if ($user == "admin" and $passwort == "123") {
      $_SESSION["username"] = $user;
      $verhalten = 1;
    }
    else {
      $verhalten = 2;
    }
  }
?>

<html>
  <head>
    <title>LOGIN</title>

    <?php if ($verhalten == 2) { ?>
      <meta http-equiv="refresh" content="3; URL=seite2.php">
    <?php } ?>
  </head>
  <body>
    <?php if ($verhalten == 0) { ?>
      <center>Bitte logge dich ein: <br />
        <form method="post" action="index.php?page=log">
          <input type="text" name="user" placeholder="Benutzername" />
          <br>
          <input type="password" name="passwort" placeholder="Passwort" />
          <br>
          <input type="submit" value="EINLOGGEN" />
        </form>
        <?php if ($verhalten == 1) { ?>
          Du hast dich erfolgreich eingeloggt und wirst nun weitergeleitet.
        <?php }
          if ($verhalten == 2) {
        ?>
          Falscher Benutzername oder falsches Passwort <a href="index.php">Zurueck</a>
        <?php } ?>
      </center>
  </body>
</html>
Computer, Technik, Fehler, HTML, programmieren, Login, PHP, Script
2 Antworten
C# User Login: Passwort-Hash vergleichen?

Hallo,

ich programmiere eine Anwendung, in der man Adressen mit SQL-Server verwalten kann. Man kann Benutzer anlegen und sich mit denen beim Start der Anwendung einloggen.

Nun möchte ich das Passwort hashen. Beim Erstellen des Benutzers wird bereits ein Hashwert generiert und in der Passwort-Spalte in der Datenbank angezeigt. Beim Einloggen soll auch das Passwort gehasht werden und dann der Hash vom Einloggen mit dem aus der Datenbank auf Übereinstimmung verglichen werden.

Ich habe mich an folgendem Tutorial orientiert: https://dotnetcodr.com/2017/10/26/how-to-hash-passwords-with-a-salt-in-net-2/

Ich generiere also immer einen zufälligen Hashwert und das auch beim Einloggen. Wenn ich dann also den Hash vom Einloggen mit dem aus der Datenbank pvergleiche, können die nie übereinstimmen, weil eben bei beiden immer ein zufälliger Wert generiert wird.

Hash (beim Erstellen des Benutzers):

public HashWithSaltResult HashWithGenericSalt(string password, int saltLength, HashAlgorithm hashAlgo)
{
    RNG rng = new RNG();
    byte[] saltBytes = rng.GenerateRandomCryptographicBytes(saltLength);
    byte[] passwordAsBytes = Encoding.UTF8.GetBytes(password);
	List<byte> passwordWithSaltBytes = new List<byte>();

    passwordWithSaltBytes.AddRange(saltBytes);
    passwordWithSaltBytes.AddRange(passwordAsBytes);
    byte[] digestBytes = hashAlgo.ComputeHash(passwordWithSaltBytes.ToArray());

    return new HashWithSaltResult(Convert.ToBase64String(saltBytes), Convert.ToBase64String(digestBytes));
}

Hash (beim Einloggen):

public HashWithSaltResult HashWithSalt(string password, string salt, HashAlgorithm hashAlgo)
{
	// Wie hashe ich beim einloggen?
}

Einloggen:

using (var context = new PersonDbContext())
{
	var query = from p in context.Benutzers where textBoxVorname.Text == p.Vorname && textBoxName.Text == p.Name && HashResultSha512.Digest == p.PasswortDigest select p;
    HashPassword();
}

public void HashPassword()
{
    PasswordWithSaltHasher pwHasher = new PasswordWithSaltHasher();
    HashResultSha512 = pwHasher.HashWithSalt();

    db.CheckBenutzerLogin(textBoxVorname.Text, textBoxPasswort.Text, HashResultSha512.Salt, HashResultSha512.Digest);
}

Was muss ich in

public HashWithSaltResult HashWithSalt

schreiben, damit er den Hashwert aus der Datenbank verwendet und nicht wieder einen neuen Wert generiert?

sql, programmieren, Passwort, Login, Programmierung, C Sharp, SQL-Server, Visual Studio
3 Antworten

Meistgelesene Fragen zum Thema Login

Geräte aus Wlan entfernen

6 Antworten

Passwort für die Standardsicherung NRW

2 Antworten

Wie kann ich mit einer tastenkombination cmd öffnen?

7 Antworten

Wie kann ich meinem User name aus dem Login löschen?

7 Antworten

FireTV Stick über Primekonto in 2 Haushalten nutzbar?

2 Antworten

Woher kann ich merken, dass ich auf Facebook gehackt wurde?

5 Antworten

Was kann ich tun wenn ich das Router Passwort vergessen habe?

1 Antwort

Snapchat; Nummer gewechselt. Wie kann ich mich einloggen?

2 Antworten

Werde von Snapchat immer automatisch ausgeloggt. Warum?

3 Antworten

Login - Neue und gute Antworten