No lo he probado pero, a simple vista me hace mucho ruido esto:
Código PHP:
Ver original$mat_sesion = $_SESSION["mat"];
{
// ...
¿Que se supone que validas ahi? si $mat_sesion siempre va a estar definida, la estas forzadamente definiendo. Ademas, si $_SESSION["mat"] no esta definida, cosa que si es posible, ese codigo lanzara warning. Sin mencionar que no tiene sentido crear copias de la variables que luego no usaras mas.
Algunas soluciones posibles son:
o
Código PHP:
Ver original$mat_sesion = (isset($mat_sesion) ?
$_SESSION["mat"] : null); {
// ...
Lo mismo en otro script:
Y solo como comentario:
El llamado a session_start() debe der la primer linea del archivo, en cada archivo que use sesiones, no debes ubicarla a mitad del script y menos dentro de un condicional. (a exepcion de que previamente llames a session_destroy())
Igual te toca depurar a ver porque falla.