ich den folgenden Code haben, aber ich kann nicht den Benutzer erhalten auf ihr Konto anmelden, in der Datenbank die Länge des Passworts als gespeichert ist 35. Ich habe var_dump die Passwortvariable, um zu sehen, was in sie eingefügt wird und den gleichen Wert wie das in der Datenbank gespeicherte Passwort. Jede Hilfe, schätzen eskann nicht mit md5 php Rechnung log
<?php
include_once("config.php");
session_start();
$message = "";
if (isset($_POST['username'])) {
$username = ($_POST['username']);
$password =md5($_POST['password']);
$password = ($password);
$sql = "SELECT * FROM user WHERE username = '$username' && password='$password'";
$query = mysqli_query($conn, $sql);
$row = mysqli_fetch_row($query);
$userid = $row[0];
$checkuser = $row[5];
$checkpassword = $row[4];
$type = $row[1];
$name = $row[2];
$surname = $row[3];
if ($username != $checkuser || $password != $checkpassword) {
$message = " username or password entered is incorrect.";
}
if ($username == $checkuser && $password == $checkpassword) {
$_SESSION['username'] = $username;
$_SESSION['type'] =$type;
$_SESSION['name'] = $name;
$_SESSION['surname'] = $surname;
$_SESSION['userid'] = $userid;
if($_SESSION['type'] == "admin") {
header("Location: adminindex.php");
} else {
header("Location: index.php");
}
}
}
?>
Warum sind Sie die Werte so viele Male zu vergleichen? Welcher Vergleich ist der, der versagt? – David
Bitte verwenden Sie PHP [eingebaute Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) Passwortschutz zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –
[Kleine Bobby] (http://bobby-tables.com/) sagt, [Ihr Skript ist für SQL-Injection-Angriffe gefährdet.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-Injektion-in-php) Erfahren Sie mehr über [vorbereitet] (http://en.wikipedia.org/wiki/Prepared_statement) Erklärungen für [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –