El caso es que inicia sesión correctamente y de hecho la cierra pero en vez de volver al archivo index me saca ese error.
El index.php
Código:
Su controlador.php<?php session_start(); //$_SESSION["centro"] = 1; ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="estilos/css/index.css" title="style"> <!--Hacer limpio el siguiente código más adelante--> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><!--Librería de Jquery--> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script><!--Librería de Jquery UI--> <!--IMPORTACION DE JS--> <script type="text/javascript" src="../librerias/scripts/openwysiwyg/scripts/wysiwyg.js"></script> <script type="text/javascript" src="../librerias/scripts/openwysiwyg/scripts/wysiwyg-settings.js"></script> <!--Carga de todos los js de comprobaciones--> <script type="text/javascript" src="../app/js/comprobaciones/formularios.js"></script> <!--Funciones de jquery tales como la carga de tabs dinámicos--> <script type="text/javascript" src="../app/js/funciones_jquery_ui.js"></script> <!--Carga el js de ventanas emergentes--> <!--AL CARGAR LA PÁGINA--> <script type="text/javascript" > $( document ).ready(function() { //Para que un div se abra con el efecto $( ".highlight" ).show( "highlight" ); $( ".blind" ).show( "blind",1000 ); //Multiple checks $("#check_todos").click(function(event){ if($(this).is(":checked")) { $(".casilla:checkbox:not(:checked)").attr("checked", "checked"); }else{ $(".casilla:checkbox:checked").removeAttr("checked"); } }); }); //Clona la lista de clases de ese centro que hay donde se cambian de clase los alumnos y la añade a la parte de filtros. //Hace uso de DOM para ello. $( document ).ready(function() { cloneNode=document.getElementById("clases_para_cambiar").cloneNode(true); document.getElementById("filtro_aula").appendChild(cloneNode); //Quedaría ver cambiar el name. }); </script> <script> $(function() { $( "#dialog_email" ).dialog({ autoOpen: false, width:800, show: { effect: "puff", duration: 500 }, hide: { effect: "puff", duration: 500 } }); $( "#email" ).click(function() { $( "#dialog_email" ).dialog( "open" ); }); }); </script> <!--CÓDIGO PARA QUE LOS BOTONES SE AJUSTEN AL TEMA DE JQUERY UI--> <!-- <script> $(function() { $( "input[type=submit], input[type=reset]") .button() .click(function( event ) { event.preventDefault(); }); }); </script> --> <script type="text/javascript"> //Script para hacer visibles los submenus del menu principal. /*$(document).ready(function() { $('.menu li:has(ul)').hover(function(e){ $(this).find('ul').css({display: "block"}); }, function(e){ $(this).find('ul').css({display: "none"}); }); });*/ </script> </head> <body> <?php include('../app/includes_y_requires.php')?> <!--INICIO DEL CONTENIDO--> <div id="contenedor"> <div id="top"> <div><span onclick=" document.location.href = 'index.php?c=1'">SUPERGUARDIÁN</span></div> <div> <input type="text" class="search" size="50" /> <button type="button" onclick="session_destroy()">Buscar</button> </div> <div><?php include("../app/vistas/menu.php"); ?> </div> </div> <!--Fin de menú--> <div id="principal"> <div id="central"> <?php if(isset($_SESSION["login"])) { //$accionPredefinida ="nueva_alta"; if(!empty($_GET['controlador'])){ $controlador = $_GET['controlador']; if(! empty($_GET['accion'])) $accion = $_GET['accion']; else{ // $accion = $accionPredefinida; } //Ya tenemos el controlador y la accion. //Formamos el nombre del fichero que contiene nuestro controlador $controlador = "../app/controladores/".$controlador.".php"; //Incluimos el controlador o detenemos todo si no existe if(is_file($controlador)) require_once $controlador; else die('El controlador no existe - 404 not found'); //Llamamos la accion o detenemos todo si no existe if(is_callable($accion)) $accion(); else // die('La accion no existe - 404 not found'); echo "NO SE HA SOLICITADO UNA ACCIÓN"; } if(empty($_GET['controlador']) && empty($_GET['accion'])){ //require_once"../app/vistas/nuevo_alumno.php"; include("../app/vistas/listar_alumnos.php"); } }//Fin del if de comprobación de logueado else { ?> <form method="POST" action="../app/controladores/login.php""> <span class="b">ACCESO: </span> <span>Usuario</span><input type='text' name="user" value=" " size="10"/> <span>Contraseña</span><input type='password' name="pass" value="" size="10"/> <input type="submit" value="Entrar"/> </form> <?php } ?> </div> <!--Fin de central--> <div id="derecha"> </div> <!--Fin de derecha--> </div> <!--Fin de principal--> </div> <!--Fin de contenedor--> </body> </html>
Código:
Y su modelo.php<?php //Si se envía el formulario de login llama a login (modelo) con los parámetros de usuario y contraseña. if(isset($_POST['user'])) { require '../modelos/conexion.php'; require '../modelos/login.php'; $u=$_POST['user']; $p=$_POST['pass']; login($u,$p); } function cerrar_sesion() { // Destruir todas las variables de sesión. $_SESSION = array(); // Si se desea destruir la sesión completamente, borre también la cookie de sesión. // Nota: ¡Esto destruirá la sesión, y no la información de la sesión! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finalmente, destruir la sesión. session_destroy(); header("Location: ../../publico/index.php?"); } ?>
Código:
<?php function login($u,$p){ session_start(); global $servidor, $bd, $usuario, $contrasenia; try{ @ $db = new mysqli($servidor, $usuario, $contrasenia); if (mysqli_connect_errno() != 0) throw new Exception('Error conectando:'.mysqli_connect_error(), mysqli_connect_errno()); $db->select_db($bd); if ($db->errno != 0) throw new Exception('Error seleccionando bd:'.$db->error, $db->errno); $consulta = $db->query("SELECT * FROM usuarios WHERE email='".$u."' AND password='".$p."'"); if (mysqli_num_rows ($consulta) > 0){ $_SESSION['login']=1; header("Location: ../../publico/index.php"); } else { echo "Usuario o contraseña no coinciden"; } if ($db->errno != 0) throw new Exception('Error realizando consulta:'.$db->error, $db->errno); $db->close(); }catch (Exception $e){ echo $e->getMessage(); if (mysqli_connect_errno() == 0) $db->close(); exit(); } return $consulta; } ?>
Y el del menu.php
Código:
He visto soluciones del tipo comentar x linea en php.ini y cosas como que puede ser algún espacio. No quiero hacer trampas al servidor y no creo que tenga ningún espacio o carácter raro. <ul class="menu"><img src="../pruebas/cara.jpg" alt="Configuración"/> <li><a>Perfil</a></li> <li><a href="#">tyutyuy</a></li> <li><a href="index.php?controlador=login&accion=cerrar_sesion">Salir</a></li> </ul>
¿De que podría venir el fallo?