我正在嘗試創建頁面登錄。使用ajax登錄問題
沒有Ajax它工作得很好。這是我的login.php;
if($_POST)
{
$username =$_POST["username"];
$password =$_POST["password"];
$query = $handler->query("SELECT * FROM members WHERE username='$username' && password='$password'",PDO::FETCH_ASSOC);
if ($say = $query -> rowCount()){
if($say > 0){
session_start();
$_SESSION['session']=true;
$_SESSION['username']=$username;
$_SESSION['password']=$password;
echo "ok";
}else{
echo "Couldn't login.";
}
}else{
echo "Wrong username or password.";
}
}
無論如何,這裏是我的java腳本代碼;
$(function(){
$("#loginbutton").click(function(){
var username = $("#username").val();
var password = $("#password").val();
if(username != "" && password != ""){
$.ajax("login.php",{
type : "POST",
data : "username="+username+"&password="+password,
success : function(data){
if(data == "ok"){
$("#message").html(data);
}else{
$("#fail").fadeIn();
}
}
});
}
});
});
即使我把正確的登錄信息(當我得到的login.php「OK」的響應,它總是輸出$("#fail").fadeIn();
。而不是$("#message").html(data);
我想不出我錯了地方。
這裏是登錄表單:
<div id="login">
<form action="" onsubmit="return false;" method="post">
<input type="text" class="form-control" id="username" name="username" placeholder="Username" autocomplete="off"><br>
<input type="password" class="form-control" id="password" name="password" placeholder="Password" autocomplete="off"><br>
<input class="btn btn-success" type="submit" id="loginbutton" value="Login">
</form>
<div id="message"> </div>
<div id="fail" style="display: none;">failed.</div>
</div>
檢查'數據'之前/之後是否有空白。您也可以使用此代碼打開SQL注入。如果數據確實有空格,請參閱http://stackoverflow.com/questions/31197638/ifcondition-fails-in-jascript/31197876#31197876 – chris85
不是您當前的問題.....但您也不應以純文本格式存儲密碼。 – chris85
@ chris85,好像是我的問題。謝謝。順便說一句,據我所知,當我使用PDO而不是mysql時,SQL注入是安全的。你能給我一些線索如何開始修復它? – Lukasz