Para mi forma de ver, seria mejor que sacaras procedimientos especificos de la funcion, una funcion devuelve un valor, no ejecuta un sinnumero de acciones para el sistema... ejemplo:
function login($email,$upass){
//retorna si usuario existe o no (true o false), si loguea o no
}
Código PHP:
Ver originalif(function login($email,$upass)){ //si devuelve true
$_SESSION['datos'] = $datos_traidos_de_la_db; //aqui especificas las variables session
$_SESSION['nivel'] = ;
}
luego de esto, cuando ya especificaste nivel, id en session
Código PHP:
Ver originalif($nivel == 1){ //o un case
header(); //aqui va redireccion nivel 1, en el documento, no en la funcion }
if($nivel == 2){
header(); //aqui va redireccion nivel 2, en el documento, no en la funcion }
etc etc...
luego en cada pagina a la que se requiera un nivel especifico, de primero debes hacer una simple comprobacion:
Código PHP:
Ver original$nivel_pagina = 2;
if($_SESSION['nivel'] != 2){
echo "No tienes permisos para estar aqui";
exit(); //para que no siga cargando nada mas }
espero haberte dado una mejor idea