PHP使用AJAX登录

时间:2016-12-20 16:47:28

标签: php ajax

我希望能够使用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");

        }  


    }

  ?>

1 个答案:

答案 0 :(得分:0)

您无法从ajax请求重定向。要使此设置正常工作,您的ajax请求必须返回一个值,该值将告诉前端重定向。在您的AJAX成功回调中,您然后检查该值,然后

SimpMessagingTemplate

但这不是保护my-account.php的安全方式。如果你想重新定位登录,为什么你要使用AJAX?为什么不使用发布到my-account.php的表单,并在那里验证?