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 ;
    }
    
}
    
 
?>    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;
        }
    }
    
 
    
}
 
 
?>    
 

