Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/04/2016, 07:45
CodeFactory
 
Fecha de Ingreso: marzo-2016
Mensajes: 8
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Sistema de login con POO

Cita:
Iniciado por Malenko Ver Mensaje
Para empezar, no haces chequeos de errores. Si falla la conexión al realizar el connect no tendrías ni que intentar lanzar la select. Esto me lleva al otro error... el constructor no tendría que realizar el connect ya que estarás ocupando una conexión hasta que el desarrollador llame al "verificar". Y tampoco has liberado el recurso (la conexión) al dejar de usarla.

Personalmente, los datos de usuario y contraseña a verificar los pasaría en la función "Verificar" y no en el constructor.
La conexion y los datos de usuario(al menos) si debería de hacerla en el constructor puesto que después puedo crear mas métodos y utilizarlos.

Si por algun motivo no utilizo el método verificar() entonces según tu forma de verlo, nunca se haría la conexion ni obtendría el valor del usuario.
PD: Me falto un método para cerrar la conexión.

PD1: La duda que yo tengo es, ¿Seria mejor crear la consulta en la clase o fuera de la clase?


Código PHP:
<?php
interface Login{
    public function 
verificar();
}

class 
LoginImpl implements Login{
    private 
$username;
    private 
$password;
    private 
$dato = array();
    private 
$db;
    
    private 
$consulta;

    public function 
__construct($username,$password,$datos){
        
$this->username $username;
        
$this->password $password;
        
        
$this->dato explode(' ',$datos);
        
$this->db mysqli_connect($this->dato[0],$this->dato[1],$this->dato[2],$this->dato[3]);
    }

    public function 
verificar(){
        
$res false;
        
$this->consulta mysqli_query($this->db"SELECT username,password FROM usuarios WHERE username = '".mysqli_real_escape_string($db$this->username)."' AND password = '".mysqli_real_escape_string($db$this->password)."' LIMIT 0,1");
        if(
$consulta1 mysqli_fetch_assoc($this->consulta)){
            
$res true;
        }
        return 
$res;
    }

    public function 
close(){
        
mysqli_close($this->db);
    }
    
}

$login = new LoginImpl("usuario","password","localhost root user db");
if(
$login->verificar() == true){
    echo 
'Correcto';
}else{
    echo 
'Incorrecto';
}
$login->close();
?>
Saludos.