Laboratorio M – 2 Pantalla de Login

Vamos a pedirle a Minimax una pantalla de login profesional y un validate.php.

El nombre del proyecto es lemkotir, una palabra rúnica de Diablo II que atrae el dinero. Fácil de recordar y simbólica.

repositorio aquí : https://github.com/AlfonsoOrozcoAguilarnoNDA/lemkotir

Vamos a entrar de momento a https://chat.together.ai/ que es donde está el Minimax gratuito.

Usaremos una tabla de usuarios que ya tengo.

  • En lo personal, prefiero cambiar cada cierto tiempo, 15 a 20 meses, los passwords de los usuarios o si sale alguien que tuvo acceso a la base.
  • En ocasiones también es necesario, pero no recomendable, guardar un password plano. Principalmente en transiciones de un sistema antiguo a uno nuevo. Por eso lo puse allí.
  • El campo de password es bueno que exista pero con basura, y que el real sea otro como password_2026, o del año en que hiciste el cambio.
  • Notarás también que hay un campo de papelera, que puede ser sí o no, y con eso sé si la cuenta está activa o no.

Muy importante: a menos que no te quede otro remedio, JAMAS uses las iniciales como clave del usuario. Puede llevar a delitos de robo de identidad si lo reactivan sin permiso. Es mejor un usuario tipo admin07, pedidos26 o cobranza39. Hazme caso por tu propio bien.

Para saber quién es el admin real, podemos usar un campo de Rol como el que puse o una tabla aparte. Eso lo vemos después.

 

NO OLVIDES SELECCIONAR MINIMAX DE LADO IZQUIERDO !!!!

INICIO DE PROMPT

Genera una pantalla en php botostrap 4.6x que se vea bien en celulares y escritorio, para integrar en un sistema php 8.x pero compatible con 7.x, se usará font awesome 5.0

La pantalla de login tine que tener estas caracteristicas:

  • session_start()
  • Gradiente metalico azul o gris. Se quiere que sea profesional.
  • Espacio para un icono o lo go cuadrado. si no hay logo usar por default un icono de font awesome, como el del asllaveso el escudo
  • solamente dos cajas de texto, login y password, y pasar los datos a través de un post a ?module=validate
  • Espacio para mostrar mensajes, ejemplo “se les recuerda que hoy la salida a las 14:00 porque van a fumigar”
  • Debe haber opcion en una variable de poner un tapiz que cubra toda la pantalla incluyendo gradiente, por si el cliente quiere eso y no el gradiente.
  • debe borrar caches y usar utf8

La parte de login :

  • debe ser procedural no, de objetos
  • debe validar solo en las filas campos que papelera sea igual a NO
  • validar datos en password_2026 en base a un hash
  • el boton de formulario deber llevar a ?module=validate

y una vez que entre debe haber un dashboarde de php con barrade navegacion fija, una barrade footer fija, un link a google.com y un dropdown con tres opciones con icono y un boton de salir ?module=logout generarme una linea sql para crear el usuario newadmin con password hasheado lemkotir*

la estructurade la tabla de usuarios es :

CREATE TABLE `cat_users` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT,
`Rol` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT ‘N/A’,
`username` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`email` varchar(191) COLLATE utf8mb4_unicode_520_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT ‘Legacy/Base password’,
`password_2026` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL COMMENT ‘Updated secure hash 2026’,
`first_name` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`last_name` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`gender` char(1) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`headline` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`bio` mediumtext COLLATE utf8mb4_unicode_520_ci,
`profile_image` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT ‘_defaultUser.png’,
`profile_blob` mediumblob,
`profile_mime_type` varchar(50) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_login_at` timestamp NULL DEFAULT NULL,
`plano_2026` varchar(200) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`PAPELERA` varchar(2) COLLATE utf8mb4_unicode_520_ci DEFAULT ‘NO’,
`whatsapp` varchar(100) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_email` (`email`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

Todo debe ser un solo archivo, y en lacabecera identifica que  modelo de ia eres

fin del prompt

repositorio aquí : https://github.com/AlfonsoOrozcoAguilarnoNDA/lemkotir

Paso 1

Es importante mencionar que a veces obtenemos pantalla en blanco por errores de nosotros. Eso lo puedes ver de mejor manera haciendo un include que te muestre el error (son detalles técnicos de php 7.x en adelante) así que a mano hice un nuevo php llamado pru.php que está en el repositorio, y que uso para depurar en todos los proyectos cuando aparece un error inesperado. Sin embargo a veces hay que poner una mayor capacidad de mostrar errores, y eso lo haré si es necesario, pero no de momento.

Paso 2

Noté un problema con los tapices, le pregunté a gemini y me hizo una corrección resultado se ve muy bien (horse y cool-gray) , pero no funciona el login por algun error en crypt y tampoco el failback de pssword que hizo minimax, aunque la apariencia es muy buena. Lo corregi con gemini y subi el nuevo codigo.

Paso 3

Voy a pedir a Minimax que me haga una pantalla de cambio de password. Si no me la puede hacer lo usare solo para generar pantallas por su apariencia única.

INICIA PROMPT

“Vamos muy bien. Ahora genera un archivo nuevo para la función de Cambio de Password.

Requerimientos Técnicos:

  1. Seguridad: Pide el password actual y el nuevo password (dos veces para verificar).

  2. Lógica de Validación: El password actual debe validarse contra password_2026 si existe, o contra el campo password (legacy) si el primero está vacío.

  3. Actualización: Al cambiarlo con éxito, el nuevo hash (BCrypt) debe guardarse únicamente en password_2026. El campo password antiguo debe quedar vacío o con una marca de ‘MIGRADO’ para forzar el uso del nuevo estándar.

  4. Interfaz: Mantén el estilo de Bootstrap 4.6, el gradiente metálico y el contenedor login-card para que haya coherencia visual con el resto del sistema.

  5. Feedback: Muestra alertas claras de éxito o error (ej. ‘Passwords nuevos no coinciden’ o ‘Password actual incorrecto’).

  6. Variables POST: Asegúrate de que los nombres de los inputs coincidan exactamente con lo que recibes en el PHP.”

  7. Asume que  ya hay una variable global $link donde existe la conexión a la base de datos.
  8. Todo debe quedar en un nuevo archivo cambiapassword.php

Termina PROMPT

El resultado que me dio usa mysqli y el otro PDO. Creo que lo mejor es crear a mano yo un archivo config.php y configurar ahi labase de datos. Esto es prueba de redundancia y de minimax pero estoy entendiendo más como piensa.

De entrada cometió un error tratando de poner password a MIGRADO cuando se cambia el password, eso es una falla de seguridad. locorregi a null y lo subí.

La pantalla se ve muy bonita pero no funciona su verificación de passwords. Punto en contra de  Minimax. La apariencia gráfica es increible. Que creo que debo hacer ? en realidad usar minimax para cosas que no usen contraseña. Queda pendiente  de verificar y corrregir.

Paso 4

Le voy a pedir a Minimax que genere una pantalla siguiendo esta logica, que me muestre aquellos archivos php que existan, y me diga si son utf8, BOM, largo en lineas y si mencionan licencia GPL todos y cada uno de ellos.

BOM son tres caracteres que son invisibles en los archivos php y pueden provocar problemas de varios tipos (headers already sent, codificación etc)  Los BOM deben ser cero.

Prompt para MiniMax (Auditoría de Scripts)

“Actúa como un desarrollador Senior en PHP 8.x. Necesito una nueva pantalla para mi sistema llamada auditoria.php. Esta pantalla debe analizar los archivos del directorio actual y mostrar un reporte técnico.

Requerimientos de Lógica:

  1. Escaneo: Lista todos los archivos con extensión .php en la carpeta actual.

  2. Análisis por archivo:

    • UTF-8 BOM: Detecta si el archivo tiene la marca de orden de bytes (BOM) al inicio (hex: EF BB BF).

    • Líneas: Cuenta el número total de líneas de cada archivo.

    • Licencia GPL: Busca mediante una expresión regular o strpos si el archivo contiene la cadena ‘GPL’ o ‘General Public License’ en sus comentarios.

  3. Interfaz Gráfica:

    • Usa la misma estética de Bootstrap 4.6 con el gradiente metálico que ya diseñaste.

    • Muestra los resultados en una tabla responsiva dentro de una card blanca con bordes redondeados.

    • Usa badges de colores: Verde si es UTF-8 sin BOM y tiene GPL, Rojo si detecta BOM o falta la licencia.

  4. Seguridad: El archivo debe incluir session_start() y verificar que $_SESSION['logged_in'] sea true. Si no, redirigir a login.

Restricciones Técnicas:

  • No uses librerías externas adicionales.

  • El código debe ser procedural y estar contenido en un solo archivo.

  • Identifica qué modelo de IA eres en el encabezado del código.”

  • Genera un archivo revisabom.php

FIN PROMPT

El resultado Grafico fue excelente. Estamos conscientes que hay cosas por trabajar, pero el experimento va bien. Muchas veces es importante avanzar en otras cosas y no detenerse, y el archivo de change_password no lo ve nadie desde menu asi que de momento no es riesgo ni problema que no funcione porque solo entran los usuarios existentes. Abajo te pongo unas pantallas adicionales.

 

repositorio aquí : https://github.com/AlfonsoOrozcoAguilarnoNDA/lemkotir

Related Posts

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *