




Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
A comprehensive guide to building a user management system using php and mysql. It covers the essential components, including database configuration, model creation, user controllers, authentication, and view implementation. Code examples and explanations for each step, making it suitable for beginners and experienced developers alike.
Typology: Exercises
1 / 8
This page cannot be seen from the preview
Don't miss anything!





proyecto_control_usuarios/ โ โโโ config/ โ โโโ database.php โ โโโ config.php โ โโโ controllers/ โ โโโ UsuarioController.php โ โโโ AuthController.php โ โโโ models/ โ โโโ Usuario.php โ โโโ views/ โ โโโ usuarios/ โ โ โโโ crear.php โ โ โโโ editar.php โ โ โโโ listar.php โ โ โ โโโ auth/ โ โโโ login.php โ โโโ registro.php โ โโโ public/ โ โโโ css/ โ โโโ js/ โ โโโ index.php โ โโโ helpers/ โโโ validacion.php โโโ autenticacion.php
conexion = new PDO("mysql:host={$this->host};dbname={$this- >db_name}", $this->usuario, $this->password);
$this->conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $this->conexion; } catch (PDOException $e) { die("Error de conexiรณn: ". $e->getMessage()); } } }
conexion = $db->conectar(); } public function crear(array $datos): bool { $query = "INSERT INTO {$this->tabla} (nombre, email, password) VALUES (:nombre, :email, :password)"; $stmt = $this->conexion->prepare($query); $passwordHash = password_hash($datos['password'], PASSWORD_BCRYPT); return $stmt->execute([ ':nombre' => $datos['nombre'], ':email' => $datos['email'], ':password' => $passwordHash, ]); } public function listar(): array { $query = "SELECT * FROM {$this->tabla}"; $stmt = $this->conexion->query($query); return $stmt->fetchAll(PDO::FETCH_ASSOC); } public function obtener(int $id): ?array { $query = "SELECT * FROM {$this->tabla} WHERE id = :id"; $stmt = $this->conexion->prepare($query); $stmt->execute([':id' => $id]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function actualizar(int $id, array $datos): bool { $query = "UPDATE {$this->tabla} SET nombre = :nombre, email = :email WHERE id = :id"; $stmt = $this->conexion->prepare($query); return $stmt->execute([ ':nombre' => $datos['nombre'], ':email' => $datos['email'],
$this->usuarioModel->eliminar($id); header('Location: /usuarios/listar'); } }
usuarioModel = $usuario; } public function login() { if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = $_POST['email']; $password = $_POST['password']; $usuario = $this->usuarioModel->obtenerPorEmail($email); if ($usuario && password_verify($password, $usuario['password'])) { session_start(); $_SESSION['usuario_id'] = $usuario['id']; header('Location: /usuarios/listar'); } else { // Manejar error } } include 'views/auth/login.php'; } public function logout() { session_start(); session_destroy(); header('Location: /login'); } public function registro() { if ($_SERVER['REQUEST_METHOD'] === 'POST') { $datos = [ 'nombre' => $_POST['nombre'], 'email' => $_POST['email'], 'password' => $_POST['password'] ]; $this->usuarioModel->crear($datos); header('Location: /login'); } include 'views/auth/registro.php'; } }
Lista de Usuarios
Lista de Usuarios Crear Usuario
ID Nombre Email Acciones
Editar Eliminar
Crear Usuario
Iniciar Sesiรณn
Contraseรฑa
Ingresar
Registro
Registro de Usuario
Nombre
Contraseรฑa
Registrar
Para que las rutas funcionen adecuadamente, se necesita un front controller en public/index.php. Archivo: public/index.php
listar(); break; case '/usuarios/listar': $usuarioController->listar(); break; case '/usuarios/crear': $usuarioController->crear(); break; case (preg_match('/^/usuarios/editar/[0-9]+$/', $request)? true : false): $id = (int)preg_replace('//usuarios/editar//', '', $request); $usuarioController->editar($id); break; case (preg_match('/^/usuarios/eliminar/[0-9]+$/', $request)? true : false): $id = (int)preg_replace('//usuarios/eliminar//', '', $request); $usuarioController->eliminar($id); break; case '/login': $authController->login(); break; case '/registro': $authController->registro(); break; case '/logout': $authController->logout(); break; default: http_response_code(404); echo "404 Not Found"; break; }