我正在使用jQuery UI模式对话框在我的html和PHP脚本之间进行交互的用户登录系统上工作。最近,我将我的所有用户功能都移到了一个PHP文件中,从我之前在我的标题标记中找到它们的位置。来自jQuery UI对话框的AJAX调用
如果有人输入有效的用户名/密码,我可以获得登录功能,但现在我正在考虑其他可能性,即某人输入了有效的用户名,但密码不正确,或者他们输入了不存在的用户名。
我遇到的问题是在对话脚本上调用AJAX。我想提交登录表单到相同的页面user.php,并且要么登录一个用户,要么返回一个错误消息来填充同一个对话框上的div。
现在,我的代码将返回一条错误消息,但它也会返回用户表单的副本。不知道我在这里做错了什么...
任何输入,将不胜感激。
编辑:决定继续并发布user.php的全部内容,因为根据一个答案进行更改,使此文件添加的html完全消失。现在我猜,大概有几件事我做错了:
//if user is logged in, show name and Log Out option, else show Log In and Sign Up options
if(isset($_COOKIE["user"])) {
setSessionUserData($_COOKIE["user"]);
echo "
Logged in as {$_SESSION["username"]}";echo "
| ";echo "
Log Out";} else {
echo "
Log In";echo "
| ";echo "
Sign up";}
?>
Username
Password
Are you sure you want to log out?
$(function() {
var username = $("#username"),
password = $("#pw"),
loginFields = $([]).add(username).add(password);
$("#login_link").click(function() {
$("#login_dialog").dialog("open");
});
$("#logout_link").click(function() {
$("#logout_dialog").dialog("open");
});
$("#login_dialog").dialog({
autoOpen: false,
height: 200,
width: 250,
resizeable: false,
modal: true,
buttons: {
Submit: function() {
$.post("auth.php",
{
username: $("#username").val(),
password: $("#pw").val()
},
function(result) {
if(result=='success'){
window.location='Practice.php';
}
else {
$(".error").html(result);
}
}
)
},
Cancel: function(){
$(this).dialog("close");
}
},
close: function() {
loginFields.val("");
}
});
$("#logout_dialog").dialog({
autoOpen: false,
modal: true,
height: 150,
resizeable: false,
buttons: {
Okay: function() {
window.location = "logout.php";
},
Cancel: function() {
$(this).dialog("close");
}
}
});
});
function setSessionUserData($cookie) {
$con = connect();
$query = "SELECT * FROM practice_user WHERE userid = '$cookie'";
$result = mysqli_query($con, $query);
$userData = mysqli_fetch_array($result);
$_SESSION["username"] = $userData["username"];
$_SESSION["fname"] = $userData["first_name"];
$_SESSION["lname"] = $userData["last_name"];
}
?>
...和PHP:
if($_SERVER["REQUEST_METHOD"] == "POST") {
$user = test_input($_POST["username"]);
$pass = test_input($_POST["password"]);
//check if correct login
if (chkLogin($user, $pass)) {
$id = getUser($user, $pass);
setUserCookie($id);
header("Location: Practice.php");
}
//check if username exists but incorrect password entered
else if (chkUser($user)) {
echo "Username and password do not match";
}
//Or else return that username doesn't exist
else {
echo "Username does not exist";
}
}
有在我的代码等功能处理验证等。
如果我需要发布这些内容,请让我知道。
+0
你是什么意思“返回用户表单的副本”?它看起来像这个PHP代码只是发出重定向或回显一个字符串。我没有看到任何其他潜在产出。代码中是否有其他输出未显示?我不清楚这里发生了什么。 –
+1
在你的PHP你做了成功的重定向,为什么不只是返回成功,并在JavaScript中做重定向? –
+0
在这个特定的文件中有很多代码。我在这里发布的内容仅涉及登录功能。其余的是验证功能和其他功能的代码(注销,创建账户等)。 我认为问题在于我如何处理PHP中的事情。我确实希望它重定向成功......我可能没有正确地执行AJAX ...或PHP。我不太确定:/ –