我有一个工作的php登录表单,我现在正尝试在同一页面中使用jquery ajax请求处理,但在提交具有正确凭据的表单后,我仍然收到“无效登录”消息。
jquery和ajax的新手,但我的代码如下。任何帮助有一点解释,所以我可以学习和理解而不是复制非常感谢谢谢!
以下是按此顺序在同一页面上。
<?php
if(isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM table WHERE username='$username' AND password='$password'";
$result = mysql_query($query)or die(mysql_error());
$num_row = mysql_num_rows($result);
$row=mysql_fetch_array($result);
if( $num_row >=1 ) {
session_start();
$_SESSION['logged'] = TRUE;
$_SESSION['user_name']=$row['username'];
header('Location: index.php');
exit();
} else {
echo "Invalid login. Please try again.";
exit();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="login/style.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#login").click(function() {
var action = $("#form1").attr('action');
var form_data = {
username: $("#username").val(),
password: $("#password").val(),
is_ajax: 1
};
$.ajax({
type: "POST",
url: location.href,
data: form_data,
success: function(response)
{
if(response == 'success')
$("#form1").slideUp('slow', function() {
$("#message").html("<p class='success'>You have logged in successfully!</p>");
});
else
$("#message").html("<p class='error'>Invalid username and/or password.</p>");
}
});
return false;
});
});
</script>
</head>
<body>
<div id="content">
<h1>Login Form</h1>
<form id="form1" name="form1" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<input type="text" name="username" id="username" />
<input type="password" name="password" id="password" />
<input type="submit" id="login" name="login" value="Submit" />
</form>
<div id="message"></div>
</div>
</body>
</html>
答案 0 :(得分:2)
问题是你实际上并没有告诉PHP输出任何东西,所以很明显,进行AJAX调用的页面在成功登录时都没有收到任何内容,nothing != 'success'
,这就是为什么它显示了错误页面。
当登录成功时,您应该回显'success'
字符串。
...
if( $num_row >=1 )
{
session_start();
$_SESSION['logged'] = TRUE;
$_SESSION['user_name']=$row['username'];
header('Location: index.php');
exit('success');
}
else
{
exit('Invalid login. Please try again.');
}
...
答案 1 :(得分:0)
当你在jQuery中调用ajax时,你可以选择在成功时返回响应。在这种情况下,您通过jQuery检查是否response == 'success'
。在PHP中,您永远不会输出'success'
- 因此它将始终返回false。
试试这个:
if( $num_row >=1 )
{
session_start();
$_SESSION['logged'] = TRUE;
$_SESSION['user_name']=$row['username'];
echo "success";
exit();
}
else
{
exit();
}