Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

fallo en formulario login

Estas en el tema de fallo en formulario login en el foro de Frameworks y PHP orientado a objetos en Foros del Web. que he hecho algunos cambios al codigo . he hecho varios y ahora no me acuerdo de cuales pero me ha dejado de funcionar el ...
  #1 (permalink)  
Antiguo 11/11/2011, 07:40
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años
Puntos: 1
fallo en formulario login

que he hecho algunos cambios al codigo . he hecho varios y ahora no me acuerdo de cuales pero me ha dejado de funcionar el formulario de login.php para logearme en la aplicacion y acceder a la informacion de la base de datos.

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"];
    
    
$userUsuario::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"); ?>
user.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 ;
    }
    
}
    

?>
session.php:

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();
?>
haber si encontrais el error.

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...
  #2 (permalink)  
Antiguo 11/11/2011, 08:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: fallo en formulario login

¿no usas un HASH para las contraseñas?, deberías habilitar el registro de errores para ver si efectivamente está dando un error, y depurar las cadenas SQL
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: fallo, formulario, login, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.