基于ajax的php-mysql登录系统
我最近开始学习php,所以我对它不是很在行。我一直在尝试用php/ajax创建一个登录系统。我已经尽了我所能,但似乎能找出实际问题的根源。Ajax无法从我的process.php文件中获取数据,即使我已经在url中添加了它。唯一执行的代码是来自索引脚本的代码,而不是来自进程的代码。我的数据库连接正常。只是ajax和process.php之间似乎没有通信。它只是在Ajax中执行“else”(data==true)代码。很抱歉,我可能无法很好地表达自己,但我只是希望你理解我的意思。 下面是我创建的文件 下面是member.php类基于ajax的php-mysql登录系统,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我最近开始学习php,所以我对它不是很在行。我一直在尝试用php/ajax创建一个登录系统。我已经尽了我所能,但似乎能找出实际问题的根源。Ajax无法从我的process.php文件中获取数据,即使我已经在url中添加了它。唯一执行的代码是来自索引脚本的代码,而不是来自进程的代码。我的数据库连接正常。只是ajax和process.php之间似乎没有通信。它只是在Ajax中执行“else”(data==true)代码。很抱歉,我可能无法很好地表达自己,但我只是希望你理解我的意思。 下面是我创建的文
<?php
class member {
public $table;
public function __construct(){
$this->table = "users";
}
//login check
public function check($username,$password,$conn){
$this->table = "users";
//$password_hash = md5($password);
$stmt = $conn->prepare("SELECT * FROM ".$this->table." WHERE
Username='$username' AND Password='$password' LIMIT 1");
$stmt->execute();
if($stmt->rowCount() > 0)
{
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
// print_r($row);
$_SESSION['id'] = $row['id'];
;
$_SESSION['email'] = $row['email'];
return true;
}
} else {
return false;
}
}
}
?>
在Ajax中使用GET
方法传递数据,但在process.php文件中检索数据时使用POST
。您需要更改ajax调用代码,并且应该使用post方法。另外,serialize
函数不附加需要手动推送的登录输入元素。我已经更新了代码,如下所示:
$("#login").click(function (e) {
e.preventDefault();
var data = $("#login_form").serializeArray();
data.push({ name: this.name, value: this.id });
console.log(data);
$.ajax({
type: "POST",
url: 'process.php',
data: data,
success: function (data) {
if (data == true) {
$("#message").addClass('alert alert-success');
$("#message").html("Login successful");
$("#login").html('Redirecting..');
window.location = "dashboard.php";
} else {
$("#message").addClass('alert alert-danger');
$("#message").html('login failed');
$("#login").html('Failed');
}
},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus = 'error') {
alert('Request not completed');
}
$("#login").html('Failed');
},
beforeSend: function () {
$("#message").removeClass('alert alert-danger');
$("#message").html('');
$("#login").html('Logging in..');
},
});
});
您可以按原样更新代码,它应该可以正常工作。希望对您有所帮助。您在Ajax中使用GET
方法传递数据,但在process.php文件中检索数据时使用POST
。您需要更改ajax调用代码,并且应该使用post方法。另外,serialize
函数不附加需要手动推送的登录输入元素。我已经更新了代码,如下所示:
$("#login").click(function (e) {
e.preventDefault();
var data = $("#login_form").serializeArray();
data.push({ name: this.name, value: this.id });
console.log(data);
$.ajax({
type: "POST",
url: 'process.php',
data: data,
success: function (data) {
if (data == true) {
$("#message").addClass('alert alert-success');
$("#message").html("Login successful");
$("#login").html('Redirecting..');
window.location = "dashboard.php";
} else {
$("#message").addClass('alert alert-danger');
$("#message").html('login failed');
$("#login").html('Failed');
}
},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus = 'error') {
alert('Request not completed');
}
$("#login").html('Failed');
},
beforeSend: function () {
$("#message").removeClass('alert alert-danger');
$("#message").html('');
$("#login").html('Logging in..');
},
});
});
您可以按原样更新代码,它应该可以正常工作。希望它能帮助您。console.log(数据)
?控制台的“网络”选项卡显示了什么?您错误地使用了准备好的语句。参数化:无论您遵循什么PHP登录教程,都是完全过时和不安全的。您永远不应该存储明文密码,用MD5散列密码的注释代码也非常不安全。找到一个新的使用和,并遵循它。无论您是否正在“测试”,都没有理由存储明文密码(或使用MD5)。现在就要学会正确地做这件事。而且,你的代码对用户是开放的。不要通过将字符串粘在一起来生成查询。相反,使用with。这一评论和我之前的评论都是至关重要的。不要忽略它们。console.log(数据)
可能重复?控制台的“网络”选项卡显示了什么?您错误地使用了准备好的语句。参数化:无论您遵循什么PHP登录教程,都是完全过时和不安全的。您永远不应该存储明文密码,用MD5散列密码的注释代码也非常不安全。找到一个新的使用和,并遵循它。无论您是否正在“测试”,都没有理由存储明文密码(或使用MD5)。现在就要学会正确地做这件事。而且,你的代码对用户是开放的。不要通过将字符串粘在一起来生成查询。相反,使用with。这一评论和我之前的评论都是至关重要的。不要忽略它们。可能的副本做了,但仍然。实际上,我想尝试一些东西,因此使用get方法。我只是忘了在这里发布之前编辑。@epospiky我已经更新了我的答案。请检查这个,它应该可以正常工作。非常感谢您的回复。我更新了代码,就像你发布的一样,但没有任何改变。它仍在发出“登录失败”消息。我真的不知道为什么。请通过Skype与我联系:rohit.mittal54。让我调试一下你的代码Hi@Rohit Mittal。再次感谢您的回复。实际上,我现在没有Skype信用卡,也许我们可以尝试其他方式,比如zoom。你可以在这里打,但还是打了。实际上,我想尝试一些东西,因此使用get方法。我只是忘了在这里发布之前编辑。@epospiky我已经更新了我的答案。请检查这个,它应该可以正常工作。非常感谢您的回复。我更新了代码,就像你发布的一样,但没有任何改变。它仍在发出“登录失败”消息。我真的不知道为什么。请通过Skype与我联系:rohit.mittal54。让我调试一下你的代码Hi@Rohit Mittal。再次感谢您的回复。实际上,我现在没有Skype信用卡,也许我们可以尝试其他方式,比如zoom。你可以在这里打
$("#login").click(function (e) {
e.preventDefault();
var data = $("#login_form").serializeArray();
data.push({ name: this.name, value: this.id });
console.log(data);
$.ajax({
type: "POST",
url: 'process.php',
data: data,
success: function (data) {
if (data == true) {
$("#message").addClass('alert alert-success');
$("#message").html("Login successful");
$("#login").html('Redirecting..');
window.location = "dashboard.php";
} else {
$("#message").addClass('alert alert-danger');
$("#message").html('login failed');
$("#login").html('Failed');
}
},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus = 'error') {
alert('Request not completed');
}
$("#login").html('Failed');
},
beforeSend: function () {
$("#message").removeClass('alert alert-danger');
$("#message").html('');
$("#login").html('Logging in..');
},
});
});