gpt4 book ai didi

使用ajax的php-mysql登录系统

转载 作者:行者123 更新时间:2023-11-29 06:33:16 24 4
gpt4 key购买 nike

我最近开始学习php,所以我不太擅长它。我一直在尝试使用 php/ajax 创建一个登录系统。我已尽我所能,但似乎可以找出实际问题的根源。即使我已经将其添加到 url 中,Ajax 也无法从我的 process.php 文件中获取数据。唯一执行的代码是来自索引脚本的代码,而不是来自进程的代码。我的数据库连接没问题。只是ajax和process.php之间似乎没有通信。它只是执行 Ajax 中的“else”(data==true) 代码。很抱歉我可能无法很好地表达自己的意思,但我只是希望您能理解我的意思。以下是我创建的文件。

这是member.php类

       <?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;

}

}


}

?>

这是 process.php 文件

    <?php
session_start();

require_once('member.php');

//for login
if(isset($_POST['login'])){
$username = $_POST['username'];
$password = $_POST['password'];


if($username ==""){
echo "Please enter your email";
}
elseif($password == ""){
echo "Please enter your password";
}
else{

//connect to database
require_once('db.php');

//instantiate the member class
$member = new member();

$login_check = $member->check($username,$password,$conn);
if($login_check == true){
echo true;

}
else{
echo "Invalid email or password";
}
}

}

?>

这是包含 ajax 代码的索引文件

    <?php
//session_start();
include('header.php');
require_once('db.php');
require('process.php');


?>
<html lang="en">
<head>
<title>Login/Signup</title>

</head>
<body>
<div class="container">
<div class="content">
<div class="form">
<div id = "message"></div>
<ul class="tab">
<li><a href="">LOGIN</a></li>
<li><a href="">SIGNUP</a></li>
</ul>
<div class="tab-content">
<div class="login-tab">
<form id="login_form" method="post" class="login-
form" >
<div class="">
<input type="text" id = "username"
name="username" class="form-control" placeholder="Enter your Username">
</div>
<div class="">
<input type = "password" id = "password"
name="password" class="form-control" placeholder="Enter your Password">
</div>
<div><button type = "submit" id = "login"
name="login" class="btn btn-primary" >login</button></div>
</form>
<div class="clearfix"></div>
<p>Or Login with</p>
<ul class="alt-login">
<li><a href=""><img src=""></a></li>
<li><a href=""><img src=""></a></li>
<li><a href=""><img src=""></a></li>
</ul>
</div>
<div class="clearfix"></div>
<div class="tab_signup">
<form>

</form>
</div>

</div>
</div>
</div>
</div>
</body>


<script type="text/javascript">
$( document ).ready(function() {
$("#login").click(function(e){
e.preventDefault();


var username = $("#username").val();

var password = $("#password").val();



var data = $("login_form").serialize();



$.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{
//alert(data);
$("#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..');
},
});


// }

});



});
</script>
</html>

P.S 我现在不关心对密码进行哈希处理,因为我仍在测试中。

最佳答案

您在 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的php-mysql登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com