hola no se que tengo mal en el codigo pero no me funciona la sesion de logueo cuando creo un usuario nuevo me lo crea bien con su username y password creados. pero cuando intento acceder desde login.php me dice que usuario y contraseña no coinciden pero no me da ningun error.
el codigo es extenso aqui os lo dejo
login.php
Código PHP:
<?php
require_once("../includes/initialize.php");
if($sesion->esta_logueado())
{
redireccionar_a("admin.php");
}
?>
<?php
if(isset($_POST["submit"]))
{
$username = $_POST["username"];
$password = $_POST["password"];
$usuario= Usuario::autenticar($username,$password);
if($usuario)
{
$sesion->loguearse($usuario);
grabar_acciones("logueo", "el usuario ".$usuario->usuario_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">
<a href="admin/admin.php">Regresar a la website</a>
</td>
<td id="pagina">
<h2>Administración</h2>
<?php if(isset($mensaje)) { echo "<p>" . $mensaje . "</p>"; } ?>
<form action="login.php" method="post">
<table>
<tr>
<td>Nombre de usuario:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Contraseña:</td>
<td><input type="password" name="password" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Ingresar" />
</form>
</td>
</tr>
</table>
<?php require_once("admin_footer.php"); ?>
user.php
Código PHP:
<?php
require_once(LIB_DIR.SD."database.php");
class Usuario extends Tabla
{
public $id;
public $usuario;
public $clave;
public $nombre;
public $apellido;
protected static $nombre_tabla = "usuarios";
protected static $campos_tabla = array("usuario" , "clave" , "nombre" , "apellido");
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 ;
}
}
?>
database.php:
Código PHP:
<?php require_once(LIB_DIR.SD."database.php"); ?>
<?php
class Tabla
{
protected static $nombre_tabla;
protected static $campos_tabla;
public static function buscar_por_id($id)
{
global $bd;
$matriz_usuarios = static::buscar_por_sql(" SELECT * FROM " .static::$nombre_tabla. " WHERE id =".$bd->preparar_consulta($id). " LIMIT 1 " );
return (!empty($matriz_usuarios)) ? array_shift($matriz_usuarios) : false ;
}
public static function buscar_todos()
{
return self::buscar_por_sql(" SELECT * FROM " .static::$nombre_tabla);
return $resultado;
}
public static function buscar_por_sql($sql)
{
global $bd;
$resultado = $bd->enviar_consulta($sql);
$matriz_objetos = array();
while($registro = $bd->fetch_array($resultado))
{
array_push($matriz_objetos, static::instanciar($registro));
}
return $matriz_objetos;
}
public static function instanciar($registro)
{
$nombre_clase = get_called_class();
$objeto = new $nombre_clase;
foreach($registro as $propiedad => $valor)
{
if($objeto->propiedad_existe($propiedad))
{
$objeto->$propiedad = $valor;
}
}
return $objeto;
}
public function propiedad_existe($propiedad)
{
$propiedades = get_object_vars($this);
return array_key_exists($propiedad,$propiedades);
}
public function nombre_completo()
{
if(isset($this->nombre) && isset($this->apellido))
{
return $this->nombre . " " . $this->apellido;
}
else
{
return "";
}
}
public function propiedades()
{
$campos_props = array();
foreach(static::$campos_tabla as $campo)
{
$campos_props[$campo]= $this->$campo;
}
return $campos_props;
}
public function guardar()
{
if(!isset($this->id))
{
return $this->crear();
}
else
{
return $this->actualizar();
}
}
public static function cantidad_total()
{
global $bd;
$sql = "SELECT COUNT(*) FROM ".static::$nombre_tabla;
$resultado = $bd->enviar_consulta($sql);
$registro = $bd->fetch_array($resultado);
return array_shift($registro);
}
public function crear()
{
global $bd;
$propiedades = $this->propiedades();
$sql = " INSERT INTO " .static::$nombre_tabla."(";
$sql .= implode(",",array_keys($propiedades));
$sql .= ") VALUES ('";
$sql .= implode("','",array_values($propiedades)). "')";
if($bd->enviar_consulta($sql))
{
$this->id = $bd->insert_id();
return true;
}
else
{
return false;
}
}
public function actualizar()
{
global $bd;
$propiedades= $this->propiedades();
$prop_format = array();
foreach($propiedades as $propiedad => $valor)
{
array_push($prop_format,"{$propiedad}='{$valor}'");
}
$sql = "UPDATE " .static::$nombre_tabla. " SET ";
$sql .= implode(",",$prop_format);
$sql .= " WHERE id = " . $bd->preparar_consulta($this->id);
$bd->enviar_consulta($sql);
if($bd->affected_rows() == 1 )
{
return true;
}
else
{
return false;
}
}
public function eliminar()
{
global $bd;
$sql = " DELETE FROM " .static::$nombre_tabla. " ";
$sql .= " WHERE id = " . $bd->preparar_consulta($this->id);
$sql .= " LIMIT 1";
$bd->enviar_consulta($sql);
if($bd->affected_rows() == 1 )
{
return true;
}
else
{
return false;
}
}
}
?>