Hola,
Me llaman la atención las primeras condiciones:
Código PHP:
if (!isset ($_SESSION['nivel']))
{
if($_SESSION['nivel'] == 1)
//Se permite el ingreso al área. OJO: modificar el nmero para cada nivel
{
}
else
{
header("location: ../../index.html?acceso_no_autorizao");
exit();
}
}
/* */
Discurres, si no me equivoco, de esta manera: Si NO está "seteado" el elemento "nivel" de la variable "$_SESSION", compruebo el valor del elemento "nivel" de la variable "$_SESSION". Ahora bien, si no está "seteado" el elemento en cuestión, no tendrá valor alguno tampoco que poder comparar.
Eso es lo segundo que se me vino a la cabeza y que me llamó la atención. Lo otro es que el problema pueda estar entorno a la variable "$_SESSION", puesto que su elemento "nivel" puede llegar a tener un valor que no sea el apropiado, dependiendo del caso, y por tanto "tu lógica" falle.