a ver si me podéis echar una manita porque me estoy volviendo loco con el logueo de una aplicación. Mi problema es que cuando envío el usuario y contraseña siempre me vuelven a aparecer las cajas de texto para introducir el usuario+password, sin ni si quiera mostrarme el mensaje de usuario y password incorrectos.
Os copio los archivos. Por un lado tendríamos la plantilla login.tpl.php:
Código:
Por otro lado el script login.php<div class="log"> | <p>Si olvidó su password póngase en contacto con el administrador.</p><br> <p><font><?php if (isset($error_msg)) print $error_msg;?></font></p> <form method="post" action="login.php"> <span>Usuario:</span> <input type="text" name="Ident_consultor" value="<?php if(isset($_COOKIE['Ident_consultor'])) print $_COOKIE['Ident_consultor']; ?>" size="15" > <span>Password:</span> <input type="password" name="password" value=""> <input type="submit" name="enviar" value="Entra!"> </form> </div>
Código:
La función "login" incluida en Usuario.class<?php session_start(); require_once "./clases/Template.php"; require_once "./clases/Usuario.class.php"; $tpl = new Template(); $usuario = new Usuario(); $tpl_login = new Template(); if(isset($POST['enviar'])){ try{ $usuario->login($_POST['Ident_consultor'],$_POST['password']); } catch (Exception $e) { $tpl_login->set('error_msg',$e->getMessage()); } } $tpl_login->set_vars(array( 'usuario_nombres' => $usuario->obtenerNombreCompleto(), 'usuario_actual' => $usuario->obtenerUsuarioIdActual(), 'esadmin' => $usuario->usuarioEsAdmin())); if ($usuario->estaRegistrado()) $tpl->set('contenido', $tpl_login->fetch('usuario.tpl.php')); else $tpl->set('contenido', $tpl_login->fetch('login.tpl.php')); $tpl->set_vars(array( 'titulo' => 'Herramienta de Administraci&oactute;n', 'usuario_actual' => $usuario->obtenerUsuarioIdActual())); echo $tpl->fetch('general.tpl.php'); ?>
Código:
Finalmente el script usuario.php que es a donde se debería de dirigir una vez logueado correctamente. public function login($Ident_consultor, $password) { $query = "SELECT Ident_consultor, consultor, usuario, password,admin "; $query .= "FROM $this->dbTabla WHERE Ident_consultor ='$Ident_consultor' AND password = '$password'"; $consulta = new Consulta($query); if($fila = $consulta->obtener_fila()) { $usuario = array ( 'Ident_consultor' => $fila['Ident_consultor'], 'consultor' => $fila['consultor'], 'usuario' => $fila['usuario'], 'password' => $fila['password'], 'admin' => $fila['admin']); } if( $consulta->num_filas() == 0 ){ throw new Exception("Login y/o Password incorrecto"); } else { $this->registrarUsuarioActual($usuario); setcookie("usuarioId", $usuario['Ident_consultor'], time()+60*60*24*31,"/","",0); } return true; }
Código:
En el caso de que necesiteis alguna de las funciones como estaRegistrado u obtenerNombreCompleto pedírmelo aunque no sé si es necesario en principio.<?php session_start(); require_once "./clases/Template.php"; require_once "./clases/Usuario.class.php"; $tpl = new Template(); $usuario = new Usuario(); $tpl->set_vars(array( 'titulo' => 'Información de usuario', 'usuario_actual' => $usuario->obtenerUsuarioIdActual())); if ( $usuario->estaRegistrado() ) { $tpl_usuario = new Template(); $tpl_usuario->set_vars(array( 'usuario_nombres' => $usuario->obtenerNombreCompleto(), 'usuario_actual' => $usuario->obtenerUsuarioIdActual(), 'esadmin' => $usuario->usuarioEsAdmin())); $tpl->set('contenido', $tpl_usuario->fetch('usuario.tpl.php')); } else { $tpl_usuario_log = new Template(); $tpl->set('contenido', $tpl_usuario_log->fetch('login.tpl.php')); } echo $tpl->fetch('general.tpl.php'); ?>
Muchas gracias por anticipado!