我希望能够使用AJAX登录来调用PHP文件。我的ajax和php代码看起来很好,并且当我做console.log(数据)时没有带来任何错误。问题是如果电子邮件和密码为真,表单发布时,php重定向(“my-account.php”)将不会执行。当字段留空时,我还没有完成验证部分。 escape_string是我在functions.php文件中创建的一个函数,用于防止sql注入,如果你想知道的话。
account.php代码
<?php require_once("includes/db.php"); ?>
<?php include "includes/header.php"; ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#btnLogin').click(function(){
var email = $("#email").val();
var password = $("#password").val();
var dataString = 'email='+email+ '&password='+password;
if(email=='' || password=='')
{
alert("Please fill all fields");
}
else
{
$.ajax({
type: "POST",
url: "login_process.php",
data: dataString,
success: function(data){
console.log(data);
}
});
}
return false;
});
});
</script>
<div class="container-fluid" style="margin-top:80px;">
<div class="row">
<div class="col-xs-4 col-xs-offset-1">
<div class="well" style="height:360px;">
<h3>Login</h3>
<br />
<form name="login" method="post" id="login">
<div class="form-group">
<label for="Email">Email:</label>
<input type="email" class="form-control" id="email" name="email" required autofocus>
</div>
<div class="form-group">
<label for="Password">Password:</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary btn-md pull-left" id="btnLogin" name="btnlogin" value="Login">
</div>
<div class="form-group">
<a class="pull-right" href="#">Forgot your password? </a>
</div>
</form>
</div>
</div>
login_process.php
<?php require_once("includes/db.php"); ?>
<?php
$email = escape_string($_POST['email']);
$password = escape_string($_POST['password']);
$login_query = query("SELECT * from users where email = '{$email}'");
while($row = fetch_array($login_query)) {
$db_pass = $row['password'];
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$contact_num = $row['tel'];
$email = $row['email'];
$postcode = $row['postcode'];
$title = $row['title'];
$user_id = $row['user_id'];
$role = $row['role'];
$_SESSION['user_id'] = $user_id;
$_SESSION['title'] = $title;
$_SESSION['firstname'] = $first_name;
$_SESSION['lastname'] = $last_name;
$_SESSION['mob'] = $contact_num;
$_SESSION['email'] = $email;
$_SESSION['postcode'] = $postcode;
if(password_verify($password, $db_pass)) {
redirect("my-account.php");
}
}
?>
答案 0 :(得分:0)
您无法从ajax请求重定向。要使此设置正常工作,您的ajax请求必须返回一个值,该值将告诉前端重定向。在您的AJAX成功回调中,您然后检查该值,然后
SimpMessagingTemplate
但这不是保护my-account.php的安全方式。如果你想重新定位登录,为什么你要使用AJAX?为什么不使用发布到my-account.php的表单,并在那里验证?