PHP重定向循环错误问题


PHP redirect Loop error issue

我搜索了论坛,但无法理解PHP重定向页面循环问题。

我有一个简单的PHP页面:
 <?php include('core/init.core.php');

$page_request="graph";
if (isset($_SESSION['account']['user_role']) && 
    $_SESSION['account']['user_role'] =='coaching_manager' ||
    $_SESSION['account']['user_role'] =='OEM'||
    $_SESSION['account']['user_role'] =='GM'||
    $_SESSION['account']['user_role'] =='director'||
    $_SESSION['account']['user_role'] =='proactive_coaching_manager') {
    $page_request="graph";
}
else
    $page_request='request_form';
if (isset($_GET['page_request'])) {
    $page_request=$_GET['page_request'];
}
$user = get_user_on_uin(strval($_SESSION['account']['ein']));
//var_dump(mysqli_num_rows($user));
//die();
if(mysqli_num_rows($user)>0){ //if user exists in the user table in sql

    //get user data from user table in sql
    $user=$user->fetch_assoc();
        //update user details in db
    update_user_on_uin($_SESSION['account']['firstname'],
        $_SESSION['account']['lastname'],
        $_SESSION['account']['email'],
        $_SESSION['account']['phone'],
        $_SESSION['account']['ein'],
        $_SESSION['account']['managerein'],
        $_SESSION['account']['ouc'],
        $_SESSION['account']['user_role'],
        $_SESSION['account']['som'],
        $_SESSION['account']['gm']);
    switch ($user['user_role']){
        case 'engineer':
            //check if user have changed their role/ouc if yes then resetup the user
        if ($_SESSION['account']['ouc']==$user['ouc']) {
           if ($page_request=='request_form') {
            header('Location: request-form-engineer.php');
            die();
        }
        elseif ($page_request=='view_requests') {
            header('Location: view-requests-engineer.php');
            die();
        }
        elseif ($page_request=='view_accepted_requests') {
            header('Location: view-accepted-requests.php');
            die();
        }
        elseif ($page_request=='view_rejected_requests') {
            header('Location: view-rejected-requests.php');
            die();
        }
        elseif ($page_request=='view_coach_assigned_requests') {
            header('Location: view-coachassigned-requests.php');
            die();
        }
        elseif ($page_request=='view_completed_requests') {
            header('Location: view-completed-requests.php');
            die();
        } 
    } 
    else{
        update_user_on_uin($_SESSION['account']['firstname'],
            $_SESSION['account']['lastname'],
            $_SESSION['account']['email'],
            $_SESSION['account']['phone'],
            $_SESSION['account']['ein'],
            $_SESSION['account']['managerein'],
            $_SESSION['account']['ouc'],
            $_SESSION['account']['user_role'],
            $_SESSION['account']['som'],
            $_SESSION['account']['gm']);
            //header('Location: setup-account.php?message=update');
        header('Location: dashboard.php');
        die();
    }

    case 'manager':
    if ($_SESSION['account']['ouc']==$user['ouc']) {
        if ($page_request=='request_form') {
            header('Location: request-form-om.php');
            die();
        }
        elseif ($page_request=='view_requests') {
            header('Location: view-requests-om.php');
            die();
        }
        elseif ($page_request=='view_accepted_requests') {
            header('Location: view-accepted-requests.php');
            die();
        }
        elseif ($page_request=='view_rejected_requests') {
            header('Location: view-rejected-requests.php');
            die();
        }
        elseif ($page_request=='view_coach_assigned_requests') {
            header('Location: view-coachassigned-requests.php');
            die();
        }
        elseif ($page_request=='view_completed_requests') {
            header('Location: view-completed-requests.php');
            die();
        }            
    } 
    else{
     update_user_on_uin($_SESSION['account']['firstname'],
        $_SESSION['account']['lastname'],
        $_SESSION['account']['email'],
        $_SESSION['account']['phone'],
        $_SESSION['account']['ein'],
        $_SESSION['account']['managerein'],
        $_SESSION['account']['ouc'],
        $_SESSION['account']['user_role'],
        $_SESSION['account']['som'],
        $_SESSION['account']['gm']);
            //header('Location: setup-account.php?message=update');
     header('Location: dashboard.php');
               // header('Location: setup-account.php?message=update');
     die();
 }

 case 'coaching_manager':
 if ($_SESSION['account']['ouc']==$user['ouc']) {
    if ($page_request=='request_form') {
        header('Location: request-form-coaching-manager.php');
        die();
    }
    elseif ($page_request=='view_requests') {
        header('Location: view-requests-coaching-manager.php');
        die();
    }
    elseif ($page_request=='view_accepted_requests') {
        header('Location: view-accepted-requests.php');
        die();
    }
    elseif ($page_request=='view_rejected_requests') {
        header('Location: view-rejected-requests.php');
        die();
    }
    elseif ($page_request=='view_coach_assigned_requests') {
        header('Location: view-coachassigned-requests.php');
        die();
    }
    elseif ($page_request=='view_completed_requests') {
        header('Location: view-completed-requests.php');
        die();
    }
    elseif ($page_request=='graph') {
        header('Location: graph.php');
        die();
    }    
}
else{
    update_user_on_uin($_SESSION['account']['firstname'],
        $_SESSION['account']['lastname'],
        $_SESSION['account']['email'],
        $_SESSION['account']['phone'],
        $_SESSION['account']['ein'],
        $_SESSION['account']['managerein'],
        $_SESSION['account']['ouc'],
        $_SESSION['account']['user_role'],
        $_SESSION['account']['som'],
        $_SESSION['account']['gm']);
            //header('Location: setup-account.php?message=update');
    header('Location: dashboard.php');
        //header('Location: setup-account.php?message=update');
    die();
}

case 'coach':
if ($_SESSION['account']['ouc']==$user['ouc']) {
   if ($page_request=='request_form') {
    header('Location: request-form-coach.php');
    die();
}
elseif ($page_request=='view_requests') {
    header('Location: view-requests-coach.php');
    die();
}
elseif ($page_request=='view_accepted_requests') {
    header('Location: view-accepted-requests.php');
    die();
}
elseif ($page_request=='view_rejected_requests') {
    header('Location: view-rejected-requests.php');
    die();
}
elseif ($page_request=='view_coach_assigned_requests') {
    header('Location: view-coachassigned-requests.php');
    die();
}
elseif ($page_request=='view_completed_requests') {
    header('Location: view-completed-requests.php');
    die();
} 
}
else{
    update_user_on_uin($_SESSION['account']['firstname'],
        $_SESSION['account']['lastname'],
        $_SESSION['account']['email'],
        $_SESSION['account']['phone'],
        $_SESSION['account']['ein'],
        $_SESSION['account']['managerein'],
        $_SESSION['account']['ouc'],
        $_SESSION['account']['user_role'],
        $_SESSION['account']['som'],
        $_SESSION['account']['gm']);
            //header('Location: setup-account.php?message=update');
    header('Location: dashboard.php');
                //header('Location: setup-account.php?message=update');
    die();
}

default:
break;

    }//end of switch
}   //end of if block
else{
    //header('Location: setup-account.php?message=new_user');
    //var_dump("expression");
   // die();
    if( insert_user($_SESSION['account']['firstname'],
        $_SESSION['account']['lastname'],
        $_SESSION['account']['email'],
        $_SESSION['account']['phone'],
        $_SESSION['account']['ein'],
        $_SESSION['account']['managerein'],
        $_SESSION['account']['ouc'],
        $_SESSION['account']['user_role'],
        $_SESSION['account']['som'],
        $_SESSION['account']['gm']) )
    {

        header("Location: dashboard.php");
        die();
    }
    else
    {
        var_dump('Sorry we do not recognise you. bye!');
        die();
    }
           // header("Location: dashboard.php");
           // die(); */
}

    //if no, redirect to role selection page
?>

此页面名称为dashboard.phpinit.core.php页开始会话。

任务很简单。如果用户找到,那么用$_Session详细信息更新用户详细信息。如果没有,那么添加一个新用户并重定向到此页面以显示相关信息。我可以看到它执行else部分,即插入用户,但在最终放弃声明ERR_TOO_MANY_REDIRECTS

之前,它在数据库中插入了大量记录

我哪里错了?

我不知道你在哪里设置$_SESSION['account']['id']的值。如果没有设置,它将总是转到主else并插入一个新用户。

话虽这么说,你在脚本开始时调用session_start()吗?如果没有,那么在脚本调用之间将不维护这些值。