Hola a todos!
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:
<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>
Por otro lado el script login.php
Código:
<?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');
?>
La función "login" incluida en Usuario.class
Código:
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;
}
Finalmente el script usuario.php que es a donde se debería de dirigir una vez logueado correctamente.
Código:
<?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');
?>
En el caso de que necesiteis alguna de las funciones como estaRegistrado u obtenerNombreCompleto pedírmelo aunque no sé si es necesario en principio.
Muchas gracias por anticipado!