Ich versuche, ein einfaches Login-Formular mit einem AJAX-Aufruf zu implementieren, der auf eine Seite umleitet, wo ich die Datenbank abfragen und dann den Benutzer auf die Indexseite oder zurück zur Anmeldeseite umleiten.Problem mit AJAX-Login-Anruf
HTML:
<form method="post">
<h4> Please Login </h4>
<input id="user" class="name" type="text" placeholder="Enter Username"/>
<input id = "pass" class="pw" type="password" placeholder="Enter Password"/>
<ul>
<li><a href="#">Forgot your password?</a></li>
<li><a href="#">Please Register Here</a></li>
</ul>
<input class="hvr-shrink" id="submitlogin" type="submit" value="Log in"/>
</form>
jQuery/AJAX:
$("#submitlogin").click(function() {
var $username = document.getElementById("user").value;
var $pass = document.getElementById("pass").value;
$.ajax ({
url: "login_request.php",
type: "POST",
data: {
'username' : $username,
'password' : $pass
}
});
});
login_request.php
include "connect.php";
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT username, password FROM `CGSB_Compliance`.`nd_users` WHERE username = '$myusername' AND password = '$mypassword'";
$result = mysqli_query($db, $sql);
$count = mysqli_num_rows($result);
if($count == 1){
$_SESSION['user'] = $myusername;
header("location:index.php");
} else {
header("location:login.php");
}
Ich habe eine Tabelle mit einem Benutzernamen und Passwort, und jedes Mal, wenn ich anmelden, Es aktualisiert nur die Anmeldeseite. Ich habe meinen Code jetzt ein paar Mal überprüft und ich kann den Grund nicht finden, warum es nicht funktioniert. Ich habe das Gefühl, dass es ein dummer Fehler von meiner Seite ist, aber ich habe mir viele Beispiele angesehen und sie alle haben ziemlich genau dasselbe. Jede Hilfe wird geschätzt.
[Kleine Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript in Gefahr ist für SQL-Injection-Attacken.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)*** Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen 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! –
** Speichern Sie niemals Nur-Text-Passwörter! ** Bitte verwenden Sie PHP [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit 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 *** [Kennwörter nicht entgehen] (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. –
Sie tun nichts, um zu verhindern, dass das Formular erneut geladen wird. Sie sollten die Entwicklerkonsole verwenden, um zu sehen, was vor sich geht. Versuchen Sie, 'type =" submit "' zu 'type =" button "' – j08691