sesiones, registro de usuario
This commit is contained in:
parent
d8bd5168b1
commit
d4ed9ee1e1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,4 @@
|
|||
-- Crear usuario que utiliza el sistema
|
||||
CREATE USER lania@localhost IDENTIFIED BY 'l4n1@Cc';
|
||||
GRANT ALL PRIVILEGES ON lania_cc.* TO lania@localhost;
|
||||
FLUSH PRIVILEGES;
|
|
@ -0,0 +1,176 @@
|
|||
DROP DATABASE IF EXISTS lania_cc;
|
||||
CREATE DATABASE lania_cc DEFAULT CHARACTER SET utf8mb4;
|
||||
USE lania_cc;
|
||||
|
||||
-- DDL -------------------------------------------------------------------------------------
|
||||
CREATE TABLE genero (
|
||||
id_genero TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
descripcion VARCHAR(20) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE rango_edad (
|
||||
id_rango_edad TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
descripcion VARCHAR(15) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE tipo_identificacion (
|
||||
id_tipo_id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
descripcion VARCHAR(50) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE nivel_estudio (
|
||||
id_nivel TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
descripcion VARCHAR(50) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE giro (
|
||||
id_giro TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
descripcion VARCHAR(100) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE examen (
|
||||
id_examen SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre_examen VARCHAR(150) NOT NULL UNIQUE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
|
||||
-- IMPORTAR BASE DE DATOS DE INEGI
|
||||
|
||||
|
||||
-- 1. TABLA CANDIDATO (datos básicos)
|
||||
CREATE TABLE candidato (
|
||||
id_candidato INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
fecha_entrada DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
fecha_salida DATETIME DEFAULT NULL,
|
||||
|
||||
nombres VARCHAR(100) NOT NULL,
|
||||
primer_apellido VARCHAR(100) NOT NULL,
|
||||
segundo_apellido VARCHAR(100) DEFAULT NULL,
|
||||
|
||||
correo VARCHAR(150) NOT NULL,
|
||||
telefono VARCHAR(30) NOT NULL,
|
||||
|
||||
id_examen SMALLINT UNSIGNED NOT NULL,
|
||||
id_tipo_id TINYINT UNSIGNED NOT NULL,
|
||||
id_rango_edad TINYINT UNSIGNED NOT NULL,
|
||||
id_genero TINYINT UNSIGNED NOT NULL,
|
||||
|
||||
FOREIGN KEY (id_examen) REFERENCES examen(id_examen),
|
||||
FOREIGN KEY (id_tipo_id) REFERENCES tipo_identificacion(id_tipo_id),
|
||||
FOREIGN KEY (id_rango_edad) REFERENCES rango_edad(id_rango_edad),
|
||||
FOREIGN KEY (id_genero) REFERENCES genero(id_genero)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- 2. TABLA INFO_CANDIDATOS (datos extendidos)
|
||||
CREATE TABLE info_candidatos (
|
||||
id_candidato INT UNSIGNED PRIMARY KEY,
|
||||
|
||||
id_pais INT NOT NULL,
|
||||
id_estado INT DEFAULT NULL,
|
||||
id_municipio INT DEFAULT NULL,
|
||||
id_colonia INT DEFAULT NULL,
|
||||
|
||||
id_nivel TINYINT UNSIGNED NOT NULL,
|
||||
id_giro TINYINT UNSIGNED NOT NULL,
|
||||
|
||||
nombre_empresa_institucion VARCHAR(150) NOT NULL,
|
||||
motivo_examen VARCHAR(255) NOT NULL,
|
||||
|
||||
calificacion_servicio TINYINT NOT NULL,
|
||||
consentimiento_pub TINYINT NOT NULL,
|
||||
|
||||
FOREIGN KEY (id_candidato) REFERENCES candidato(id_candidato)
|
||||
ON DELETE CASCADE,
|
||||
FOREIGN KEY (id_pais) REFERENCES paises(id),
|
||||
FOREIGN KEY (id_estado) REFERENCES estados(id),
|
||||
FOREIGN KEY (id_municipio) REFERENCES municipios(id),
|
||||
FOREIGN KEY (id_colonia) REFERENCES colonias(id),
|
||||
FOREIGN KEY (id_nivel) REFERENCES nivel_estudio(id_nivel),
|
||||
FOREIGN KEY (id_giro) REFERENCES giro(id_giro)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE usuario (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
usuario VARCHAR(150) UNIQUE NOT NULL,
|
||||
contrasena VARCHAR(255) NOT NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
|
||||
-- DML -------------------------------------------------------------------------------------
|
||||
|
||||
-- Inserción catalogo "genero":
|
||||
INSERT INTO genero (id_genero, descripcion) VALUES
|
||||
(1, 'Masculino'),
|
||||
(2, 'Femenino'),
|
||||
(3, 'Prefiero no decir');
|
||||
|
||||
-- Inserción catalogo "rango_edad":
|
||||
INSERT INTO rango_edad (id_rango_edad, descripcion) VALUES
|
||||
(1, 'Menos de 18'),
|
||||
(2, '18-24'),
|
||||
(3, '24-34'),
|
||||
(4, '35-44'),
|
||||
(5, '44-54'),
|
||||
(6, '55-64'),
|
||||
(7, '65 o más');
|
||||
|
||||
-- Inserción catalogo "tipo_identificacion":
|
||||
INSERT INTO tipo_identificacion (id_tipo_id, descripcion) VALUES
|
||||
(1, 'INE'),
|
||||
(2, 'Pasaporte'),
|
||||
(3, 'CURP'),
|
||||
(4, 'RFC'),
|
||||
(5, 'Cédula Profesional'),
|
||||
(6, 'Licencia de Conducir'),
|
||||
(7, 'Otro');
|
||||
|
||||
-- Inserción catalogo "nivel_estudio":
|
||||
INSERT INTO nivel_estudio (id_nivel, descripcion) VALUES
|
||||
(1, 'Primaria'),
|
||||
(2, 'Secundaria'),
|
||||
(3, 'Bachillerato'),
|
||||
(4, 'Técnico Superior Universitario'),
|
||||
(5, 'Licenciatura'),
|
||||
(6, 'Maestría'),
|
||||
(7, 'Doctorado'),
|
||||
(8, 'Otro');
|
||||
|
||||
-- Inserción catalogo "giro_empresa" considerando los giros de las empresas más comunes:
|
||||
INSERT INTO giro (id_giro, descripcion) VALUES
|
||||
(1, 'Tecnologías de la Información'),
|
||||
(2, 'Gobierno'),
|
||||
(3, 'Finanzas'),
|
||||
(4, 'Salud'),
|
||||
(5, 'Educación'),
|
||||
(6, 'Telecomunicaciones'),
|
||||
(7, 'Retail'),
|
||||
(8, 'Manufactura'),
|
||||
(9, 'Logística y Transporte'),
|
||||
(10, 'Construcción'),
|
||||
(11, 'Turismo y Hospitalidad'),
|
||||
(12, 'Energía y Recursos Naturales'),
|
||||
(13, 'Agricultura y Alimentación'),
|
||||
(14, 'Medios de Comunicación y Entretenimiento'),
|
||||
(15, 'Otros');
|
||||
|
||||
-- Inserción catalogo "examen" se refiere al nombre de la organización a la que pertence el examen:
|
||||
INSERT INTO examen (id_examen, nombre_examen) VALUES
|
||||
(1, 'Cisco'),
|
||||
(2, 'IBM'),
|
||||
(3, 'Microsoft'),
|
||||
(4, 'Oracle'),
|
||||
(5, 'SAP'),
|
||||
(6, 'CompTIA'),
|
||||
(7, 'Amazon Web Services'),
|
||||
(8, 'Google Cloud Platform'),
|
||||
(9, 'Salesforce'),
|
||||
(10, 'Red Hat'),
|
||||
(11, 'VMware'),
|
||||
(12, 'Palo Alto Networks'),
|
||||
(13, 'Fortinet'),
|
||||
(14, 'Juniper Networks'),
|
||||
(15, 'Otros');
|
||||
|
||||
-- Depues de importar la bd de inegi
|
||||
insert into paises(nombre) values('Otro');
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
// $db = Database::getInstance();
|
||||
|
||||
class Database {
|
||||
private static $instance = null;
|
||||
|
@ -7,8 +8,8 @@ class Database {
|
|||
private function __construct() {
|
||||
$host = 'localhost';
|
||||
$db = 'lania_cc';
|
||||
$user = 'root';
|
||||
$pass = 'P@ssw0rd';
|
||||
$user = 'lania';
|
||||
$pass = 'l4n1@Cc';
|
||||
|
||||
try {
|
||||
$this->mysqli = new mysqli($host, $user, $pass, $db);
|
||||
|
@ -31,8 +32,4 @@ class Database {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Uso:
|
||||
// $db = Database::getInstance();
|
||||
|
||||
?>
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__ . '/../models/UsuarioModel.php';
|
||||
|
||||
|
||||
class UsuarioController{
|
||||
private static $usuarioModel = null;
|
||||
|
||||
public static function inicializar() {
|
||||
if (self::$usuarioModel === null) {
|
||||
self::$usuarioModel = new UsuarioModel();
|
||||
}
|
||||
}
|
||||
|
||||
public static function obtenerUsuarios(){
|
||||
return self::$usuarioModel->obtenerUsuarios();
|
||||
}
|
||||
|
||||
public static function iniciarSesion($usuario, $contrasena){
|
||||
return self::$usuarioModel->iniciarSesion($usuario, $contrasena);
|
||||
}
|
||||
|
||||
public static function existeUsuario($usuario){
|
||||
$usuarios = self::obtenerUsuarios();
|
||||
|
||||
foreach ($usuarios as $u) {
|
||||
if ($u['usuario'] === $usuario) {
|
||||
return true; // El usuario ya existe
|
||||
}
|
||||
}
|
||||
return false; // El usuario no existe
|
||||
}
|
||||
|
||||
public static function registrarUsuario($usuario, $contrasena){
|
||||
if (self::existeUsuario($usuario)) {
|
||||
echo "El usuario ya existe.";
|
||||
return;
|
||||
}
|
||||
self::$usuarioModel->registrarUsuario($usuario, $contrasena);
|
||||
echo "Usuario: ${usuario} registrado exitosamente.";
|
||||
}
|
||||
|
||||
public static function eliminarUsuario($usuario){
|
||||
if (!self::existeUsuario($usuario)) {
|
||||
echo "El usuario no existe.";
|
||||
return;
|
||||
}
|
||||
self::$usuarioModel->eliminarUsuario($usuario);
|
||||
echo "Usuario: ${usuario} eliminado exitosamente.";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# Instanciar el modelo al cargar el controlador
|
||||
UsuarioController::inicializar();
|
||||
|
||||
?>
|
|
@ -1,19 +1,18 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__ . '/../models/Usuario.php';
|
||||
require_once __DIR__ . '/UsuarioController.php';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
// Crear una instancia del modelo usuario
|
||||
$usuarioModel = new Usuario();
|
||||
|
||||
// Obtener los datos de la solicitud
|
||||
$usuario = $_POST['numero-personal'];
|
||||
$contrasena = $_POST['contrasena'];
|
||||
|
||||
try {
|
||||
// Iniciar sesión del usuario
|
||||
if ($usuarioModel->iniciarSesion($usuario, $contrasena)) {
|
||||
if (UsuarioController::iniciarSesion($usuario, $contrasena)) {
|
||||
session_start(); // Iniciar la sesión
|
||||
$_SESSION['autenticado'] = true; // Marcar la sesión como autenticada
|
||||
echo json_encode(['loginExitoso' => true, 'message' => 'Inicio de sesión exitoso']);
|
||||
} else {
|
||||
echo json_encode(['loginExitoso' => false, 'message' => 'Usuario o contraseña incorrectos']);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require_once __DIR__ . '/../controllers/Database.php';
|
||||
|
||||
class Usuario {
|
||||
class UsuarioModel {
|
||||
private $conn;
|
||||
|
||||
public function __construct() {
|
||||
|
@ -58,6 +58,35 @@ class Usuario {
|
|||
}
|
||||
}
|
||||
|
||||
public function obtenerUsuarios() {
|
||||
// Preparar la consulta mysql usando msqli
|
||||
$stmt = $this->conn->prepare("SELECT usuario FROM usuario");
|
||||
if (!$stmt->execute()) {
|
||||
throw new Exception("Error al obtener nombres de usuarios: " . $stmt->error);
|
||||
}
|
||||
|
||||
// Obtener el resultado
|
||||
$result = $stmt->get_result();
|
||||
$usuarios = [];
|
||||
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$usuarios[] = $row;
|
||||
}
|
||||
|
||||
return $usuarios;
|
||||
}
|
||||
|
||||
public function eliminarUsuario($id){
|
||||
// Preparar la consulta mysql usando msqli
|
||||
$stmt = $this->conn->prepare("DELETE FROM usuario WHERE id = ?");
|
||||
$stmt->bind_param("i", $id);
|
||||
if (!$stmt->execute()) {
|
||||
throw new Exception("Error al eliminar usuario: " . $stmt->error);
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
session_start();
|
||||
|
||||
if (!isset($_SESSION['autenticado']) || $_SESSION['autenticado'] !== true) {
|
||||
header('Location: index.html');
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Pagina protegida</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Test</h1>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__ . "/controllers/usuarioController.php";
|
||||
|
||||
// UsuarioController::registrarUsuario("root", "root");
|
||||
|
||||
?>
|
Loading…
Reference in New Issue