aqui tengo todo el codigo relacionado con esta funcion de la aplicacion:
login.php
Código PHP:
<?php
require_once("../../includes/initialize.php");
if($sesion->esta_logueado())
{
redireccionar_a("admin.php");
}
?>
<?php
if(isset($_POST["submit"]))
{
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
$user= Usuario::autenticar($usuario,$clave);
if($user)
{
$sesion->loguearse($user);
grabar_acciones("logueo", "el usuario ".$user->id . " se ha logueado.");
redireccionar_a("admin.php");
}
else
{
$mensaje = "usuario/clave no coinciden.";
}
}
?>
<?php include("admin_header.php"); ?>
<table id="estructura">
<tr>
<td id="menu">
</td>
<td id="pagina">
<h2>Administración</h2>
<p> <?php echo isset($mensaje) ? $mensaje : "" ; ?> </p>
<form action="login.php" method="post">
<table>
<tr>
<td>Nombre de usuario:</td>
<td><input type="text" name="usuario" /></td>
</tr>
<tr>
<td>Contraseña:</td>
<td><input type="password" name="clave" /></td>
</tr>
</table>
<input type="submit" value="Ingresar" name="submit"/>
</form>
</td>
</tr>
</table>
<?php include("admin_footer.php"); ?>
Código PHP:
<?php
require_once(LIB_DIR.SD."database.php");
class Usuario
{
public $id;
public $usuario;
public $clave;
public $nombre;
public $apellido;
function validar_campos_obligatorios($campos_obligatorios)
{
$errores = array();
foreach($campos_obligatorios as $campo)
{
if(!isset($_POST[$campo]) || (empty($_POST[$campo]) && !is_numeric($_POST[$campo])))
{
$errores[] = $campo;
}
}
return $errores;
}
public static function buscar_por_id($id)
{
global $bd;
$matriz_usuarios = self::buscar_por_sql("SELECT * FROM usuarios WHERE id={$id}");
return (!empty($matriz_usuarios))? array_shift($matriz_usuarios) : false;
}
public static function buscar_todos()
{
return self::buscar_por_sql(" SELECT * FROM usuarios");
}
public static function buscar_por_sql($sql)
{
global $bd;
$resultado = $bd->enviar_consulta($sql);
$matriz_usuarios = array();
while($registro = $bd->fetch_array($resultado))
{
array_push($matriz_usuarios,Usuario::instanciar($registro));
}
return $matriz_usuarios;
}
public static function instanciar($registro)
{
$usuario = new Usuario();
foreach ($registro as $propiedad => $valor)
{
if ($usuario->propiedad_existe($propiedad))
{
$usuario->$propiedad = $valor;
}
}
return $usuario;
}
public function nombre_completo()
{
if(isset($this->nombre) && isset($this->apellido))
{
return $this->nombre . " " . $this->apellido;
}
else
{
return "";
}
}
public function propiedad_existe($propiedad)
{
$propiedades = get_object_vars($this);
return array_key_exists($propiedad, $propiedades);
}
public static function autenticar($usuario = "", $clave= "")
{
global $bd;
$usuario = $bd->preparar_consulta($usuario);
$clave = $bd->preparar_consulta($clave);
$sql = "SELECT * FROM usuarios ";
$sql .= " WHERE usuario='{$usuario}' ";
$sql .=" AND clave='{$clave}' ";
$sql .=" LIMIT 1";
$matriz_usuarios = Usuario::buscar_por_sql($sql);
return (!empty($matriz_usuarios)) ? array_shift($matriz_usuarios) : false ;
}
}
?>
Código PHP:
<?php
class Sesion
{
public $id;
public $usuario;
private $logueado = false;
function __construct()
{
session_start();
$this->verificar_logueo();
}
public function esta_logueado()
{
return $this->logueado;
}
public function loguearse($usuario)
{
if($id)
{
$this->id = $_SESSION["id"] = $usuario->id;
$this->usuario = $_SESSION["usuario"] = $usuario->usuario;
$this->logueado = true;
}
}
public function desloguearse()
{
unset($this->id);
unset($_SESSION["id"]);
$this->logueado = false;
}
private function verificar_logueo()
{
if(isset($_SESSION["id"]))
{
$this->id = $_SESSION["id"];
$this->usuario = $_SESSION["usuario"];
$this->logueado = true;
}
else
{
unset($this->id);
$this->logueado = false;
}
}
}
$sesion = new Sesion();
?>
otra cosa cuando meto bien el usuario y contraseña se recarga la pagina login.php pero no da error. si se meten mal la contraseña y el usuario da entonces el mensaje de error...