更新:看来我已经成功执行了AJAX POST请求,因为它在#userError中输出了PHP错误,并且在我的旧代码中更改了错误,但是我仍然得到了身份不明的索引
在这一点上,我已经尝试了所有我能想到的...
我的问题:为什么我在checkLogin.php上获得的用户名和密码的索引都不确定,而在login.php上,信息不是无效的索引。
只要填写了用户名和密码输入字段,就会调用此函数。我使用event.preventDefault();。阻止提交,该请求将在页面完全加载后调用,如果error == 0,则调用该函数。
function checkLogin() {
$("#login_form").submit(function(event) { //Create a Submit Handler
//var formData = ; //Serialize the form data
if (window.XMLHttpRequest) { //Launch XML Request
http = new XMLHttpRequest();
} else {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
http.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
$(this).text(this);
$("#userError").text(this.responseText);
}
};
http.open("POST", "checkLogin.php", true);
http.send();
});
$("#login_form").submit(); //Submit the form
checkLogin.php(DB是实际私人信息的占位符)
$link = mysqli_connect('DB', 'DB', 'DB', 'DB'); //Database Connection
if (!$link) {
die('Could not connect: ' . mysqli_connect_error());
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') { //Keeps the text inside the this.responseText
//Preparing and Binding SQL statement
$stmt = mysqli_prepare($link, "SELECT username, password FROM login WHERE username =? and password =?");
mysqli_stmt_bind_param($stmt, "ss", $username, $password);
//PRINTS UNIDENTIFIED INDEX
$username = $_POST['username']; //mysqli_real_escape_string($link, $_POST['username']); //Retrieving the username
$password = $_POST['password']; //mysqli_real_escape_string($link, $_POST['password']); //Retrieving the password
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
}
if (!$stmt) {
echo "this is invalid";
}
HTML表单标签:(此处不包含表单内容-但在client_login.php上有)
<form action="login.php" method="post" name="login_form" id="login_form">
</form>
预期:如果信息不正确,请立即执行任何操作-如果正确,请运行login.php脚本
实际:$ username和$ password的未识别索引
错误:注意:未定义的索引:第15行的(filePath)/checkLogin.php中的用户名
注意:未定义的索引:第16行(filePath)/checkLogin.php中的密码