Wenn Statement-Logik in der inneren Linie scheint jedes Mal falsch zu funktionieren (auch wenn korrekt vorhandenen Benutzernamen und Passwort eingegeben werden). Ich kann nicht herausfinden warum.If-Anweisung fehlgeschlagen (Mysql)
Code:
<?php
$conn = new mysqli("localhost", "root", "", "customerdirectory");
if($conn->connect_error) {
echo("Connection Failed " . $conn->connect_error);
exit();
}
if(isset($_POST["user"], $_POST["pass"])) {
$username = stripslashes($_POST["user"]);
$username = mysqli_real_escape_string($conn,$username);
$password = stripslashes($_POST["pass"]);
$password = mysqli_real_escape_string($conn,$password);
$result = "SELECT * FROM customer WHERE name=='$username' AND password=='$password'";
**if($conn->query($result) === TRUE)**
echo("Successful login: ".$username);
else
echo("The username or password are incorrect!");
$conn->close();
};
?>
Verwenden Sie keine 'stripslashes' auf Benutzerdaten, insbesondere Passwörter. Es zerstört Inhalte. – tadman
** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Abfrage hinzuzufügen. ** Verwenden Sie ** NICHT ** manuelles Escapen und String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/) erstellen werden, wenn Sie jemals vergessen, etwas richtig zu entkommen. – tadman
'==' sollte sein '=' – bansi