Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2011, 05:21
rufus
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
fallo en sesion de logueo

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"];
    
    
$usuarioUsuario::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() == )
        {
            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() == )
        {
            return 
true;
        }
        else
        {
            return 
false;
        }
    }
    

    
}


?>