无法成功将用户路由到仪表板

时间:2015-03-13 23:21:09

标签: php jquery

我在login_Submit.php文件中有一些逻辑,它检查用户的角色类型,然后将它们指向正确的仪表板(即管理员,主管或学生)。

重定向很好并且运行良好,但是不是加载整个页面我的代码加载登录页面中的仪表板页面,所以它看起来像这样:

Login Page with dashboard

何时应重定向并完全加载页面,如下所示:

Student dashboard

我假设它与jQuery有关,但我不完全确定问题是什么。

jQuery代码:

function loginCall() {
  var data = $('#loginForm').serialize();
  $.post('LoginSubmit.php', data, function(response){

   $("#loginForm").html(response);

  }).fail(function(jqXHR, textStatus) {
    alert( "Request failed: " + textStatus );
  });
}

基于角色类型的重定向:

if($user_record_id == false)
        {
                $message = "<p class='text-danger'>Login Failed</p>";
        }
        /*** if we do have a result, all is well ***/
        else
        {
                /*** set the session user_id variable ***/
                $_SESSION['user_record_id'] = $user_record_id;
                // echo $user_record_id;
                switch( $user_role_code){ //not sure whether to use role_type_code or role_title because i want the name rather than the code

               case 1:
                    echo "Wrong Username or Password";

                case 2:
                    header("location:AdminDashboard.php");
                    break;

                case 3:
                    header("location:SupervisorDashboard.php");
                    break;

                case 4:
                    header("location:StudentDashboard.php");
                    break;
                }
            }

更新

jQuery代码:

 function loginCall() {
      var data = $('#loginForm').serialize();
      $.post('LoginSubmit.php', data, function(response){

       $("#loginForm").html(response);
    window.location.replace(response);

      }).fail(function(jqXHR, textStatus) {
        alert( "Request failed: " + textStatus );
      });
    }

基于角色类型的重定向:

if($user_record_id == false)
        {
                $message = "<p class='text-danger'>Login Failed</p>";
        }
        /*** if we do have a result, all is well ***/
        else
        {
                /*** set the session user_id variable ***/
                $_SESSION['user_record_id'] = $user_record_id;
                // echo $user_record_id;
                switch( $user_role_code){ //not sure whether to use role_type_code or role_title because i want the name rather than the code

               case 1:
                    echo "Wrong Username or Password";

                case 2:
                    echo "AdminDashboard.php";
                    break;

                case 3:
                    echo "SupervisorDashboard.php";
                    break;

                case 4:
                    echo "StudentDashboard.php";
                    break;
                }
            }

仍然没有运气:(

2 个答案:

答案 0 :(得分:0)

即使你注释掉//header("location:SupervisorDashboard.php");,你也可以看到它加载了登录页面。

您已在loginForm

中加载内容
$("#loginForm").html(response);

这里发生的是您加载登录信息并在内部发生重定向。

我想,你不需要这里的Jquery。您可以删除该代码,只需从服务器端执行此操作。

答案 1 :(得分:0)

您无法直接使用AJAX调用重定向页面。

为什么不header("location: SomePage.php")

,而不是使用echo "SomePage.php";作为通话的结果

然后,使用返回的页面,如果必须,可以使用Javascript重定向:

window.location.replace(response);

编辑:实际上,您可以在没有JQuery和AJAX的情况下执行此操作,这是一种更简单的方法。像这样设置表单:

<form action="LoginForm.php">
...
</form>

LoginForm.php上,请务必使用header()重定向到正确的页面:

header('Location: SomePage.php');