使用AJAX登录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.

我希望能够使用AJAX登录以调用PHP文件。我的ajax和php代码看起来不错,在执行console.log(数据)时不会出现错误。问题是,如果电子邮件和密码为true,则在表单发布时不会执行php重定向(“my account.php”)。我还没来得及讨论验证部分,就在字段为空的时候。escape_字符串是我在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>

$(文档).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很棒,我鼓励您了解更多有关它的信息,但我认为这不一定是它的最佳用途。