使用AJAX登录PHP
我希望能够使用AJAX登录以调用PHP文件。我的ajax和php代码看起来不错,在执行console.log(数据)时不会出现错误。问题是,如果电子邮件和密码为true,则在表单发布时不会执行php重定向(“my account.php”)。我还没来得及讨论验证部分,就在字段为空的时候。escape_字符串是我在functions.php文件中创建的一个函数,如果您想知道的话,它可以防止sql注入 account.php代码使用AJAX登录PHP,php,ajax,Php,Ajax,我希望能够使用AJAX登录以调用PHP文件。我的ajax和php代码看起来不错,在执行console.log(数据)时不会出现错误。问题是,如果电子邮件和密码为true,则在表单发布时不会执行php重定向(“my account.php”)。我还没来得及讨论验证部分,就在字段为空的时候。escape_字符串是我在functions.php文件中创建的一个函数,如果您想知道的话,它可以防止sql注入 account.php代码 <?php require_once("includes/db.
<?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>
$(文档).ready(函数(){
$('#btnLogin')。单击(函数(){
var email=$(“#email”).val();
var password=$(“#password”).val();
var dataString='email='+email+'&password='+password;
如果(电子邮件=“”| |密码=“”)
{
警告(“请填写所有字段”);
}
其他的
{
$.ajax({
类型:“POST”,
url:“login_process.php”,
数据:dataString,
成功:功能(数据){
控制台日志(数据);
}
});
}
返回false;
});
});
登录
电邮:
密码:
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");
}
}
?>
不能从ajax请求重定向。为了使此设置生效,ajax请求必须返回一个值,该值将通知前端重定向。在AJAX成功回调中,检查该值,然后
window.location = "my-account.php";
但这不是保护my-account.php的安全方法。如果你想在登录时重定向,为什么要使用AJAX呢?为什么不使用一个发布到my-account.php并在那里经过验证的表单呢?您的脚本有风险,您甚至可以查看一下使用时发生的情况。在尝试使用之前,您甚至不检查$\u POST变量是否确实存在。您有一个提交按钮和一个Ajax调用。因此AJAX将运行并提交表单。任何人都可以猜到哪种情况会先发生我以前也这么做过,只是想到改用ajax。ajax只有在您希望保持在同一页面上但加载新数据时才有意义。如果你要改变页面,AJAX是没有意义的。好的,谢谢Dave。刚刚在网上看到一些登录ajax教程。像fancy effects按钮消失并更改为加载程序图像。我想我会在没有AJAX的情况下将其更改回以前的状态。AJAX很棒,我鼓励您了解更多有关它的信息,但我认为这不一定是它的最佳用途。