PHP - Login MVC PHP MYQL

 
Vista:

Login MVC PHP MYQL

Publicado por luis (1 intervención) el 13/12/2019 20:30:27
Buen día, desearía saber si mi lógica para el login está correcta, entre el controlador y el modelo.

CONTROLADOR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_start();
ob_start();
 
require_once('Models/LoginConsultaModel.php');
class LoginController{
 
        function __construct()
        {
 
        }
 
        function index(){
		require_once('Views/Login/index.php');
        }
 
        function login(){
 
            $Usuario=$_POST['Usuario'];
            $password=$_POST['Contraseña'];
 
            $LoginUser= new LoginConsultaModel();
            $datos = $LoginUser->login();
 
            if($datos>0){
                header("location:/Views/Login/prin.php");
 
            }
            else{
                      echo "Ese no es";
                }
 
 
    }
}
?>

MODELO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
require_once("Db/db.php");
class LoginConsultaModel {
 
    private $db;
    private $Usuarios;
 
    public function __construct(){
        $this->db = Conexion::conectar();
        $this->Usuarios = array();
    }
    public function login($Usuario,$password){
 
        $passwordmd5= MD5($password);
        $consulta = $this->db->query("SELECT COUNT(*) from Usuario WHERE Usuario='$Usuario' AND Contraseña='$passwordmd5' ;");
        while($registros = $consulta->fetch_assoc()){
            $this->Usuarios[] = $registros;
        }
        return $this->Usuarios;
    }
    }
?>

Estaría agradecido si alguien me ayuda.
saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Login MVC PHP MYQL

Publicado por anonymous (53 intervenciones) el 13/12/2019 23:31:07
Estás mezclando cosas, la conexión a tu BD debe ir completamente aparte; y el query que haces para obtener ese count(*) también lo estás haciendo en esa misma clase o capa, cuando deberías tener una capa de acceso a datos (DAO) aparte, donde ejecutes dicho query. y a ese DAO lo debe llamar tu controlador que es la capa que recibe la petición de la vista

Así tu sistema queda demasiado acoplado y el mantenimiento se dificulta por la mezcla de cosas, así no trabaja MVC, pues este framework en esencia lo que busca es separar completamente todo, y que cada capa se encargue solo del trabajo para la cual fue diseñada, lo que se traduce en sistemas con alta cohesión y bajo acoplamiento.

Y tú código como está actualmente, queda susceptible de le apliquen SQL Injection, cuando haces: WHERE Usuario='$Usuario'

Te puedes guiar con los fuentes que hay en: https://github.com/JCorreal/ControlMantenimiento_PHP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Login MVC PHP MYQL

Publicado por anonymous (53 intervenciones) el 14/12/2019 00:40:38
modelo Tu LoginController recibe los datos de la vista y los procesa, si son validos consume el modelo y le pasa al controlador General, ese modelo como argumento, a un método que a la vez llamará otro, que estará alojado en el DAO, y que recibe ese objeto, y ejecuta el query en ese DAO, y desde ahí mismo se conecta a la BD, y devuelve la respuesta a la vista, para dar acceso al sistema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar