成功登录后如何使用jQuery将用户重定向到主页

时间:2016-08-27 14:56:06

标签: php jquery ajax

我是jQuery的新手,我在 login.js 文件中使用post方法向 login.php发送请求脚本并根据已输入的表单数据的性质检索错误消息。

我的所有错误消息都在工作,并在浏览器中正确显示。我的问题是,当用户输入有效的登录凭据时,我想将它们重定向到主页。相反,jQuery将我的结果用于成功登录并将其插入login_error div。

我出错的任何想法?

login.js

$(document).ready(
function login_error()
{
    $("#login").click(function(event)
    {
        event.preventDefault();
        var postData = $('#login_form').serialize();

        $.post('login.php', postData, function(result)
        {   
            if(result != "match"){
                $('#login_error').html(result);
            }else{
                window.location = 'home.php';
            }
        });
    });
});

的login.php

<?php 

include "core/init.php";

$username = $password = "";

if(isset($_POST['username']) && isset($_POST['password'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if(empty($username) || empty($password)){
        echo '<p class="alert-danger">You didn\'t fill in all the fields.</p>';
    }else if(user_exists($username) === false){ 
        echo '<p class="alert-danger">The username you entered doesn\'t match any account in our records. Sign up for an account.</p>';
    }else if(user_verified($username) === false){
        echo "<p class='alert-danger'><strong>".$username."</strong>&nbspis not a verified username. Check your inbox for a verification email.</p>";
    }else if(check_details($username, $password) === false){
        echo '<p class="alert-danger">The login details you entered don\'t match our records.</p>';
    }else{
        log_in($username, $password);
    }

}else{
    echo '<p class="alert-danger">Oops - something broke! We\'re working to fix this, check back soon.</p>';
}

?> 

我的 log_in 功能:

function log_in($username, $password){

    $db   = mysqli_connect('localhost', 'root', '', 'forum');
    $sql  = "SELECT user_id FROM users WHERE username = ?";
    $stmt = mysqli_prepare($db, $sql);

    if($stmt){
        mysqli_stmt_bind_param($stmt, 's', $username);
        mysqli_stmt_bind_result($stmt, $user_id);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_fetch($stmt);

        if(!empty($user_id)){
            $_SESSION['id']   = $user_id;
            $_SESSION['user'] = $username;
            echo 'match';
        }else{
            return false;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

如果您的剩余代码工作正常,则只需更改window.location代码window.location.href = "home.php";此处href用于位置重定向

答案 1 :(得分:0)

成功时,您可以在php登录功能中使用header("Location: home.php");。喜欢:

    if(!empty($user_id)){
        $_SESSION['id']   = $user_id;
        $_SESSION['user'] = $username;
        header("Location: home.php");
    }else{
        return false;
    }