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
|
<?php
|
||||||
|
// $db = Database::getInstance();
|
||||||
|
|
||||||
class Database {
|
class Database {
|
||||||
private static $instance = null;
|
private static $instance = null;
|
||||||
|
@ -7,8 +8,8 @@ class Database {
|
||||||
private function __construct() {
|
private function __construct() {
|
||||||
$host = 'localhost';
|
$host = 'localhost';
|
||||||
$db = 'lania_cc';
|
$db = 'lania_cc';
|
||||||
$user = 'root';
|
$user = 'lania';
|
||||||
$pass = 'P@ssw0rd';
|
$pass = 'l4n1@Cc';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->mysqli = new mysqli($host, $user, $pass, $db);
|
$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
|
<?php
|
||||||
|
|
||||||
require_once __DIR__ . '/../models/Usuario.php';
|
require_once __DIR__ . '/UsuarioController.php';
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
|
||||||
// Crear una instancia del modelo usuario
|
|
||||||
$usuarioModel = new Usuario();
|
|
||||||
|
|
||||||
// Obtener los datos de la solicitud
|
// Obtener los datos de la solicitud
|
||||||
$usuario = $_POST['numero-personal'];
|
$usuario = $_POST['numero-personal'];
|
||||||
$contrasena = $_POST['contrasena'];
|
$contrasena = $_POST['contrasena'];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Iniciar sesión del usuario
|
// 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']);
|
echo json_encode(['loginExitoso' => true, 'message' => 'Inicio de sesión exitoso']);
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(['loginExitoso' => false, 'message' => 'Usuario o contraseña incorrectos']);
|
echo json_encode(['loginExitoso' => false, 'message' => 'Usuario o contraseña incorrectos']);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require_once __DIR__ . '/../controllers/Database.php';
|
require_once __DIR__ . '/../controllers/Database.php';
|
||||||
|
|
||||||
class Usuario {
|
class UsuarioModel {
|
||||||
private $conn;
|
private $conn;
|
||||||
|
|
||||||
public function __construct() {
|
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