我正在尝试创建页面登录。使用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