我正在用PHP和Jquery表单插件创建一个登录脚本来处理登录表单。它使用这个插件将值处理到检查凭据的PHP脚本。PHP返回"true"或"false",Jquery处理错误消息或重定向到仪表板。这是我的Jquery:
<script>
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#loginform').ajaxForm(function(html) {
success:{
if(html == 'true'){
window.location = "dashboard.php";
} else if (html == 'false') {
$(".errormsg").show();
$(".errormsg").css({
background: "#fc4452",
border: "1px solid #ff0000",
});
$('.errormsg').html('E-mail adres of wachtwoord onjuist');
} else {
$(".errormsg").show();
$(".errormsg").css({
background: "#fc4452",
border: "1px solid #ff0000",
});
$(".errormsg").html('Er ging iets mis bij het inloggen');
}
}
});
});
下面是我当前搜索db的PHP脚本:
include("../includes/mysql_connect.php");
$email = $_POST['email'];
$password = $_POST['password'];
$password = hash('sha256', $password);
// Initialize a session:
$query_check_credentials = "SELECT * FROM Users WHERE (email='$email' AND password='$password')";
$result_check_credentials = mysqli_query($dbc, $query_check_credentials);
if(!$result_check_credentials){ //If the Query Fails
echo 'Query Failed ';
}
if(mysqli_num_rows($result_check_credentials) == 1) //if Query is successfull
{ // A match was made.
session_start();
$row = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);
$_SESSION['email'] = $row['email'];
echo "true";
}else{
echo"false";
}
如您所见,返回true或false,由ajax脚本中的html函数读取,然后显示消息或进行重定向。
问题是,它目前没有这样做。它总是在"else"语句中显示错误消息。上面写着:"出错了",即使输入了正确的凭据。
我在没有jquery的情况下测试了我的PHP,我知道它根据凭据返回"真"或"假"。没有空格或其他东西。
为了排除故障,我还编写了下面这段简单的PHP代码,它的功能与上面的PHP相同,但没有使用数据库。奇怪的是,当我使用下面的PHP…我的jQuery工作得很好,它显示一个消息,当密码或用户名是错误的,它显示相应的消息与密码"1"answers"123"。
这是因为mysql查询还是我错过了别的东西?提前感谢!
PHP测试脚本
$email = $_POST['email'];
$password = $_POST['password'];
if($email=="john@doe.com" && $password == "123"){
session_start();
$_SESSION['email'] = $email;
echo "true";
} else {
echo "false";
}
我发现了这个问题,在我的第一个PHP文件中,经过仔细检查,我包含了文件"mysql_connect.php",这导致了PHP响应上的额外内容。我把它从我的"mysql_connect"文件中剥离出来,