Cita:
Iniciado por Malenko
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.