Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 页面在登录后不重定向_Php_Jquery_Ajax - Fatal编程技术网

Php 页面在登录后不重定向

Php 页面在登录后不重定向,php,jquery,ajax,Php,Jquery,Ajax,您好,我不熟悉使用AJAX和jquery,我正在尝试创建登录系统,但当我尝试登录时,它成功创建了$u会话,但无法重定向到下一页,我尝试使用window.location.replace,但它似乎不起作用。我一直在尝试查找答案,但似乎都不起作用。希望有人能帮助我 php try { // sql here $sql = ("SELECT * FROM users WHERE username = :username"); $stmt = $db->connectio

您好,我不熟悉使用AJAX和jquery,我正在尝试创建登录系统,但当我尝试登录时,它成功创建了$u会话,但无法重定向到下一页,我尝试使用window.location.replace,但它似乎不起作用。我一直在尝试查找答案,但似乎都不起作用。希望有人能帮助我

php

 try {
    // sql here
    $sql = ("SELECT * FROM users WHERE username = :username");
    $stmt = $db->connection->prepare($sql);
    $stmt->execute(array(
        ':username' => $form_USERNAME
    ));
    $row=$stmt->fetch(PDO::FETCH_ASSOC);

    //check if username is existing in database
    if($form_USERNAME == $row['username']){
        if(password_verify($form_PASSWORD, $row['user_pass'])){
            session_start();

            $_SESSION['loggedin'] = true;
            $_SESSION['userid'] = $row['user_id'];
            $_SESSION['username'] = $row['username'];
            $_SESSION['usertype'] = $row['user_type'];

            echo json_encode(array('result' => 'ok'));
        }
        else{
            echo json_encode(array(
                'error' => array(
                    'msg' => 'Invalid Username or password'
                ),
            ));
        }

    }
    else{
        echo json_encode(array(
            'error' => array(
                'msg' => 'User not found'
            ),
        ));
    }

} catch (Exception $e) {
    echo json_encode(array(
        'error' => array(
            'msg' => $e->getMessage(),
            'code' => $e->getCode(),
        ),
    ));
}
?>

jquery

<script>
$(function () {
    $('#frmLogin').on('submit', function (e) {
        e.preventDefault();
        var FormData = $('#frmLogin').serialize();

        $.ajax({
            type: 'post',
            url: '../forms/login.php',
            data: FormData,
            dataType: 'json',
            encode: true,
            beforeSend: function () {
                $('#frmBtnLogin').text("Logging in");
            },
            success: function (data) {
                if (data.error) {
                    $('#frmLoginUsername').text('');

                    alert(data.error.msg);
                } else {
                    alert(data.result);

                }

                $('#frmBtnLogin').text("Log in");
            }
        });
    });
});
<script>
$(function () {
    $('#frmLogin').on('submit', function (e) {
        e.preventDefault();
        var FormData = $('#frmLogin').serialize();

        $.ajax({
            type: 'post',
            url: '../forms/login.php',
            data: FormData,
            dataType: 'json',
            encode: true,
            beforeSend: function () {
                $('#frmBtnLogin').text("Logging in");
            },
            success: function (data) {
                if(data.result == "ok"){

                    window.location.replace("user-home.php");
                }
                else if (data.error) {
                    $('#frmLoginUsername').text('');

                    alert(data.error.msg);

                $('#frmBtnLogin').text("Log in");
            }
        }
        });
    });
});

$(函数(){
$('frmLogin')。关于('submit',函数(e){
e、 预防默认值();
var FormData=$('#frmLogin').serialize();
$.ajax({
键入:“post”,
url:“../forms/login.php”,
数据:FormData,
数据类型:“json”,
编码:对,
beforeSend:函数(){
$('frmBtnLogin').text(“登录”);
},
成功:功能(数据){
if(data.error){
$('#frmLoginUsername')。文本('';
警报(data.error.msg);
}否则{
警报(数据、结果);
}
$('frmBtnLogin')。文本(“登录”);
}
});
});
});

所以我试着在网上搜索答案,尝试了一些方法,但仍然不起作用

更新jquery

<script>
$(function () {
    $('#frmLogin').on('submit', function (e) {
        e.preventDefault();
        var FormData = $('#frmLogin').serialize();

        $.ajax({
            type: 'post',
            url: '../forms/login.php',
            data: FormData,
            dataType: 'json',
            encode: true,
            beforeSend: function () {
                $('#frmBtnLogin').text("Logging in");
            },
            success: function (data) {
                if (data.error) {
                    $('#frmLoginUsername').text('');

                    alert(data.error.msg);
                } else {
                    alert(data.result);

                }

                $('#frmBtnLogin').text("Log in");
            }
        });
    });
});
<script>
$(function () {
    $('#frmLogin').on('submit', function (e) {
        e.preventDefault();
        var FormData = $('#frmLogin').serialize();

        $.ajax({
            type: 'post',
            url: '../forms/login.php',
            data: FormData,
            dataType: 'json',
            encode: true,
            beforeSend: function () {
                $('#frmBtnLogin').text("Logging in");
            },
            success: function (data) {
                if(data.result == "ok"){

                    window.location.replace("user-home.php");
                }
                else if (data.error) {
                    $('#frmLoginUsername').text('');

                    alert(data.error.msg);

                $('#frmBtnLogin').text("Log in");
            }
        }
        });
    });
});

$(函数(){
$('frmLogin')。关于('submit',函数(e){
e、 预防默认值();
var FormData=$('#frmLogin').serialize();
$.ajax({
键入:“post”,
url:“../forms/login.php”,
数据:FormData,
数据类型:“json”,
编码:对,
beforeSend:函数(){
$('frmBtnLogin').text(“登录”);
},
成功:功能(数据){
如果(data.result==“确定”){
window.location.replace(“user home.php”);
}
else if(data.error){
$('#frmLoginUsername')。文本('';
警报(data.error.msg);
$('frmBtnLogin')。文本(“登录”);
}
}
});
});
});

使用AJAX与服务器通信时,服务器无法将用户重定向到相应的页面。您的前端将只接收最终重定向的响应数据

如果您没有使用AJAX,您可以简单地在php脚本中添加如下内容:

header('位置:https://my.page/to/redirect/to.php');
但是因为您使用的是AJAX,前端将只接收重定向提供的数据,就好像它是一个正常响应一样

相反,考虑使用Ajax实现来评估HTTP响应状态:

//您的PHP脚本
试一试{
//检查有效性
http_响应_代码(200);//正常响应状态
回音$应答;
}catch(\Throwable$exception){
//处理错误
http_响应_代码(401);//不正常响应状态
回音$应答;
}
然后让前端检查响应中的http状态代码,以决定下一步要做什么

例如:

//在Javascript中处理异步响应时
如果(xhr.status==200){
//重定向到成功登录页面
window.location.href=https://my.page/succesful-login';
}否则{
//重定向到无效的登录页面
window.location.href=https://my.page/invalid-login';
}

如果从AJAX调用此PHP页面,则需要在客户端的JS中进行重定向