我一直试图找到导致我的代码仍然获取数据的原因,即使查询是错误的。它是使用ajax的简单登录表单。
这是我的代码:
$(function() {
$("#submit_login").click(function() {
var username = $("input#username").val();
if (username == "") {
$('#error').html('Please Insert Your Email Address');
return false;
}
var password = $("input#password").val();
if (password == "") {
$('#error').html('Please Insert Your Password');
return false;
}
var dataString = 'username='+ username + '&password=' + password;
$.ajax({
type: "POST",
url: 'login.php',
data: dataString,
dataType: "html",
beforeSend: function(){ $("#submit_login").val('Connecting...');},
success: function(data) {
if (data == 0) {
$('#error').html('Wrong Login Data')
$("#submit_login").val('Sign in!');
} else {
$('#error').html('<b style="color:green;">you are logged. wait for redirection</b>');
document.location.href = 'private.php';
}
}
});
return false;
});
});
的login.php
<?php
session_start();
include("config2.php");
if(isset($_POST['username']) && isset($_POST['password']))
{
// username and password sent from Form
$username=mysqli_real_escape_string($db,$_POST['username']);
$password=md5(mysqli_real_escape_string($db,$_POST['password']));
$results = $mysqli->query("SELECT id FROM users WHERE username='$username' and password='$password'");
$obj = $results->fetch_object();
if ($results)
{
$_SESSION['username'] = $obj->id;
echo $username;
}
}
?>
问题是,每次尝试登录时,它都会将我重定向到private.php,即使用户名和密码也不正确。这意味着即使查询返回为false或0,login.php仍会获取数据。
我很难找到造成这种情况的原因,希望你们能帮助我!欢呼声。
答案 0 :(得分:-1)
如果login.php中的条件可能为false。应该是这样吗?变量$ results总是返回1,因为你持有查询而不是结果本身。而不是$ result,改为$ obj。
if ($obj)
{
$_SESSION['username'] = $obj->id;
echo $username;
}