Con este proyecto puedes iniciar sesión, registrar usuarios y realizar mantenimiento de datos como buscar por correo, ver información completa, modificar y eliminar, funciona con MySQL, cuenta con una barra lateral para cambiar entre páginas y la tabla de usuarios tiene una paginación básica.
- El proyecto inicia con el formulario iniciar sesión que solicitará los datos necesarios y una vez verificado los datos ingresados con la base de datos permitirá el ingreso al sistema, si el usuario es nuevo y no tiene una cuenta puede registrarse presionando en el botón crea nueva cuenta que esta al final del formulario.
- Al ingresar al sistema aparecerá la página principal con los datos de la persona que esta ingresando y al lado izquierdo una barra lateral para cambiar entre páginas.
- La página con CRUD es la de usuarios, empieza con el botón buscar y la caja de texto para ingresar un correo, luego se muestra una tabla con la lista de todo lo usuarios que pueden ingresar al sistema junto con su correo, password y su respectivo botón para realizar el mantenimiento necesario.
- Al presionar en el botón ver se mostrará un formulario con los datos completos del usuario seleccionado.
- El botón modificar permitirá cambiar el nombre o el password del usuario seleccionado.
- El botón eliminar, como su propio nombre lo dice, elimina al usuario por completo de la base de datos, excepto al usuario actual que esta haciendo uso del sistema.
- Al final de la tabla se muestra una etiqueta con el total de usuarios que existen en la base de datos.
- El proyecto funciona con sesiones y esta validado hasta cierto punto, por lo que es necesario presionar el botón cerrar sesión o borrar las cookies de la página para cambiar de usuario.
Al presionar en la siguiente imagen se puede ver el proyecto a tamaño original
Formulario crear nueva cuenta o registrar usuarios.
Formulario iniciar sesión solo permite el ingreso a usuarios registrados.
Panel de control y botón buscar.
Botón ver, modificar y eliminar usuario.
El proyecto esta dividido en varios archivos para que sea más fácil de entender o modificar, con el nombre ya tienes una idea de lo que hace cada página PHP.
- conexion.php
- index.php
- usuarios_registrar.php
- barra_lateral.php
- principal.php
- usuarios_tabla.php
- usuarios_ver.php
- usuarios_modificar.php
- usuarios_eliminar.php
- cerrar_sesion.php
- style.css
- fondo.png
En phpMyAdmin en la pestaña SQL se puede crear la siguiente base de datos, usar, crear la tabla de usuarios e insertar los datos de usuarios de ejemplo.
create database logincrud1; use logincrud1; DROP TABLE IF EXISTS `usuarios`; CREATE TABLE IF NOT EXISTS `usuarios` ( `nom` varchar(50) NOT NULL, `correo` varchar(50) NOT NULL, `pass` varchar(50) NOT NULL, PRIMARY KEY (`correo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; INSERT INTO `usuarios` (`nom`, `correo`, `pass`) VALUES ('Paul Christian', 'admin@gmail.com', 'admin123'), ('Juan Pérez', 'juanperez@gmail.com', '123456'), ('Ana García', 'anagarcia@hotmail.com', 'abc123'), ('Luis Hernández', 'luishernandez@yahoo.com', 'qwerty'), ('María Rodríguez', 'mariarodriguez@gmail.com', '987654'), ('Carlos Sánchez', 'carlossanchez@hotmail.com', 'asdfgh'), ('Laura Martínez', 'lauramartinez@yahoo.com', 'zxcvbn'), ('David Gómez', 'davidgomez@gmail.com', '111111'), ('Sofía Torres', 'sofiatorres@hotmail.com', '222222'), ('Pablo Ramírez', 'pabloramirez@yahoo.com', '333333'), ('Andrea Castro', 'andreacastro@gmail.com', '444444'), ('Ruth Reyes', 'ruthireyes@gmail.com', 'zxcasd');
- conexion.php
<?php $host = 'localhost'; $nom = 'root'; $pass = ''; $db = 'logincrud1'; $conn = mysqli_connect($host, $nom, $pass, $db); if (!$conn) { die("Error en la conexión: " . mysqli_connect_error()); } ?>
- index.php
<?php session_start(); include('conexion.php'); if(isset($_SESSION['usuarioingresando'])) { header('location: principal.php'); } ?> <html> <!--Busca por VaidrollTeam para más proyectos. --> <head> <title>VaidrollTeam</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="style.css"> </head> <body> <div class="FormCajaLogin"> <div class="FormLogin"> <form method="POST"> <h1>Iniciar sesión</h1> <br> <div class="TextoCajas">• Ingresar correo</div> <input type="text" name="txtcorreo" class="CajaTexto" required> <div class="TextoCajas">• Ingresar password</div> <input type="password" id="txtpassword" name="txtpassword" class="CajaTexto" required> <div class="CheckBox1"> <input type="checkbox" onclick="verpassword()" >Mostrar password </div> <div> <input type="submit" value="Iniciar sesión" class="BtnLogin" name="btningresar" > </div> <hr> <br> <div> <a href="usuarios_registrar.php" class="BtnRegistrar">Crea nueva cuenta</a> </div> </div> </form> </div> </body> <script> function verpassword() { var tipo = document.getElementById("txtpassword"); if(tipo.type == "password") { tipo.type = "text"; } else { tipo.type = "password"; } } </script> </html> <?php if(isset($_POST['btningresar'])) { $correo = $_POST["txtcorreo"]; $pass = $_POST["txtpassword"]; $buscandousu = mysqli_query($conn,"SELECT * FROM usuarios WHERE correo = '".$correo."' and pass = '".$pass."'"); $nr = mysqli_num_rows($buscandousu); if($nr == 1) { $_SESSION['usuarioingresando']=$correo; header("Location: principal.php"); } else if ($nr == 0) { echo "<script> alert('Usuario no existe');window.location= 'index.php' </script>"; } } ?>
- usuarios_registrar.php
<?php session_start(); include('conexion.php'); if(isset($_SESSION['usuarioingresando'])) { header('location: principal.php'); } ?> <html> <head> <title>VaidrollTeam</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="style.css"> </head> <body> <div class="FormCajaLogin"> <div class="FormLogin"> <form method="post"> <h1>Crear nueva cuenta</h1> <br> <div class="TextoCajas">• Ingresar nombre</div> <input type="text" name="txtnombre" class="CajaTexto" required> <div class="TextoCajas">• Ingresar correo</div> <input type="email" name="txtcorreo" class="CajaTexto" required> <div class="TextoCajas">• Ingresar password</div> <input type="password" id="txtpassword" name="txtpassword" class="CajaTexto" required> <div class="CheckBox1"> <input type="checkbox" onclick="verpassword()" >Mostrar password </div> <div> <input type="submit" value="Crea nueva cuenta" class="BtnRegistrar" name="btnregistrar"> </div> <hr> <br> <div > <a href="index.php" class="BtnLogin">Regresar</a> </div> </div> </form> </div> </body> <script> function verpassword(){ var tipo = document.getElementById("txtpassword"); if(tipo.type == "password") { tipo.type = "text"; } else { tipo.type = "password"; } } </script> </html> <?php if(isset($_POST["btnregistrar"])) { $nombre = $_POST["txtnombre"]; $correo = $_POST["txtcorreo"]; $pass = $_POST["txtpassword"]; $insertarusu = mysqli_query($conn,"INSERT INTO usuarios(nom,correo,pass) values ('$nombre','$correo','$pass')"); if(!$insertarusu) { echo "<script>alert('Correo duplicado, intenta con otro correo');</script>"; } else { echo "<script> alert('Usuario registrado con exito: $nombre'); window.location='index.php' </script>"; } } ?>
- barra_lateral.php
<?php session_start(); include('conexion.php'); if(isset($_SESSION['usuarioingresando'])) { $usuarioingresado = $_SESSION['usuarioingresando']; $buscandousu = mysqli_query($conn,"SELECT * FROM usuarios WHERE correo = '".$usuarioingresado."'"); $mostrar=mysqli_fetch_array($buscandousu); }else { header('location: index.php'); } ?> <html> <head> <title>VaidrollTeam</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="style.css"> </head> <body> <div class="BarraLateral"> <ul> <div class="NomUsuario"><?php echo $mostrar['nom']?></div> <hr> <li><a href="principal.php" >Inicio</a></li> <li><a href="usuarios_tabla.php" >Usuarios</a></li> <li><a href="cerrar_sesion.php" >Cerrar sesión</a></li> </ul> </div> </body> </html>
- principal.php
<?php include('conexion.php'); include('barra_lateral.php'); $usuarioingresado = $_SESSION['usuarioingresando']; $buscandousu = mysqli_query($conn,"SELECT * FROM usuarios WHERE correo = '".$usuarioingresado."'"); $mostrar=mysqli_fetch_array($buscandousu); ?> <html> <title>VaidrollTeam</title> <script> function verhorafor12() { var fecha = new Date(); var hora = fecha.getHours(); var minutos = fecha.getMinutes(); var segundos = fecha.getSeconds(); var dianoche = "AM"; if (hora > 12) { hora = hora - 12; dianoche = "PM"; } if (hora === 0) { hora = 12; } var tothora = hora + ":" + minutos + ":" + segundos + " " + dianoche; document.getElementById("hora").innerHTML = tothora; } </script> <body onload="setInterval(verhorafor12, 1000);" > <div class="ContenedorPrincipal"> <div> <h1><?php echo "Bienvenido: ".$mostrar['nom'];?></h1> <h2><?php echo "Correo: ".$mostrar['correo'];?></h2> <h3>La hora del sistema es: <span id="hora"></span></h3> </div> </div> </body> </html>
- usuarios_tabla.php
<?php include('conexion.php'); include("barra_lateral.php"); ?> <html> <title>VaidrollTeam</title> <body> <div class="ContenedorPrincipal"> <?php $filasmax = 5; if (isset($_GET['pag'])) { $pagina = $_GET['pag']; } else { $pagina = 1; } if(isset($_POST['btnbuscar'])) { $buscar = $_POST['txtbuscar']; $sqlusu = mysqli_query($conn, "SELECT * FROM usuarios where correo = '".$buscar."'"); } else { $sqlusu = mysqli_query($conn, "SELECT * FROM usuarios ORDER BY nom ASC LIMIT " . (($pagina - 1) * $filasmax) . "," . $filasmax); } $resultadoMaximo = mysqli_query($conn, "SELECT count(*) as num_usuarios FROM usuarios"); $maxusutabla = mysqli_fetch_assoc($resultadoMaximo)['num_usuarios']; ?> <div class="ContenedorTabla" > <form method="POST"> <h1>Lista de usuarios</h1> <div style="text-align:left"> <a href="usuarios_tabla.php" class="BotonesUsuarios">Inicio de la tabla</a> <input class="BotonesUsuarios" type="submit" value="Buscar" name="btnbuscar"> <input class="CajaTexto" type="text" name="txtbuscar" placeholder="Ingresar correo" autocomplete="off" style='width:20%'> </div> </form> <table> <tr> <th>Nombre</th> <th>Correo</th> <th>Password</th> <th>Acción</th> </tr> <?php while ($mostrar = mysqli_fetch_assoc($sqlusu)) { echo "<tr>"; echo "<td>".$mostrar['nom']."</td>"; echo "<td>".$mostrar['correo']."</td>"; echo "<td>*****</td>"; // echo "<td>".$mostrar['pass']."</td>"; echo "<td style='width:24%'> <a class='BotonesUsuarios' href=\"usuarios_ver.php?correo=$mostrar[correo]&pag=$pagina\">Ver</a> <a class='BotonesUsuarios' href=\"usuarios_modificar.php?correo=$mostrar[correo]&pag=$pagina\">Modificar</a> <a class='BotonesUsuarios' href=\"usuarios_eliminar.php?correo=$mostrar[correo]&pag=$pagina\" onClick=\"return confirm('¿Estás seguro de eliminar a $mostrar[nom]?')\">Eliminar</a> </td>"; } ?> </table> <div style='text-align:right'> <br> <?php echo "Total de usuarios: ".$maxusutabla;?> </div> </div> <div style='text-align:right'> <br> </div> <div style="text-align:center"> <?php if (isset($_GET['pag'])) { if ($_GET['pag'] > 1) { ?> <a class="BotonesUsuarios" href="usuarios_tabla.php?pag=<?php echo $_GET['pag'] - 1; ?>">Anterior</a> <?php } else { ?> <a class="BotonesUsuarios" href="#" style="pointer-events: none">Anterior</a> <?php } ?> <?php } else { ?> <a class="BotonesUsuarios" href="#" style="pointer-events: none">Anterior</a> <?php } if (isset($_GET['pag'])) { if ((($pagina) * $filasmax) < $maxusutabla) { ?> <a class="BotonesUsuarios" href="usuarios_tabla.php?pag=<?php echo $_GET['pag'] + 1; ?>">Siguiente</a> <?php } else { ?> <a class="BotonesUsuarios" href="#" style="pointer-events: none">Siguiente</a> <?php } ?> <?php } else { ?> <a class="BotonesUsuarios" href="usuarios_tabla.php?pag=2">Siguiente</a> <?php } ?> </div> </div> </body> </html>
- usuarios_ver.php
<?php include("conexion.php"); include("usuarios_tabla.php"); $pagina = $_GET['pag']; $correo = $_GET['correo']; $querybuscar = mysqli_query($conn, "SELECT * FROM usuarios WHERE correo = '$correo'"); while($mostrar = mysqli_fetch_array($querybuscar)) { $usunom = $mostrar['nom']; $usucorreo = $mostrar['correo']; } ?> <html> <body> <div class="caja_popup2"> <form class="contenedor_popup" method="POST"> <table> <tr><th colspan="2">Ver usuario</th></tr> <tr> <td><b>Nombre:</b></td> <td><?php echo $usunom;?></td> </tr> <tr> <td><b>Correo: </b></td> <td><?php echo $usucorreo;?></td> </tr> <tr> <td colspan="2"> <?php echo "<a class='BotonesUsuarios' href=\"usuarios_tabla.php?pag=$pagina\">Regresar</a>";?> </td> </tr> </table> </form> </div> </body> </html>
- usuarios_modificar.php
<?php include("conexion.php"); include("usuarios_tabla.php"); $pagina = $_GET['pag']; $correo = $_GET['correo']; $querybuscar = mysqli_query($conn, "SELECT * FROM usuarios WHERE correo = '$correo'"); while($mostrar = mysqli_fetch_array($querybuscar)) { $usunom = $mostrar['nom']; $usucorreo = $mostrar['correo']; $pass = $mostrar['pass']; } ?> <html> <body> <div class="caja_popup2"> <form class="contenedor_popup" method="POST"> <table> <tr><th colspan="2">Modificar usuario</th></tr> <tr> <td>Nombre</td> <td><input class="CajaTexto" type="text" name="txtnom" value="<?php echo $usunom;?>" required></td> </tr> <tr> <td>Correo</td> <td><input class="CajaTexto" type="email" name="txtcorreo" value="<?php echo $usucorreo;?>" readonly></td> </tr> <tr> <td>Password</td> <td><input class="CajaTexto" type="password" name="txtpass" value="<?php echo $pass;?>" required></td> </tr> <tr> <td colspan="2"> <?php echo "<a class='BotonesUsuarios' href=\"usuarios_tabla.php?pag=$pagina\">Cancelar</a>";?> <input class="BotonesUsuarios" type="submit" name="btnmodificar" value="Modificar" onClick="javascript: return confirm('¿Deseas modificar este usuario?');"> </td> </tr> </table> </form> </div> </body> </html> <?php if(isset($_POST['btnmodificar'])) { $nom1 = $_POST['txtnom']; $correo1 = $_POST['txtcorreo']; $pass1 = $_POST['txtpass']; $querymodificar = mysqli_query($conn, "UPDATE usuarios SET nom='$nom1',correo='$correo1',pass='$pass1' WHERE correo = '$correo1'"); echo "<script>window.location= 'usuarios_tabla.php?pag=$pagina' </script>"; } ?>
- usuarios_eliminar.php
<?php include("conexion.php"); include("barra_lateral.php"); $usuarioingresado = $_SESSION['usuarioingresando']; $pagina = $_GET['pag']; $correo = $_GET['correo']; if ($correo == $usuarioingresado ) { echo "<script> alert('No puedes eliminar a tu propio usuario.'); window.location='usuarios_tabla.php' </script>"; } else { mysqli_query($conn, "DELETE FROM usuarios WHERE correo='$correo'"); header("Location:usuarios_tabla.php?pag=$pagina"); } ?>
- cerrar_sesion.php
<?php session_start(); session_destroy(); header("Location: index.php"); exit; ?>
- style.css
/*Busca por VaidrollTeam para más proyectos.*/ body { background: #f0f0f0; font-family: Arial, sans-serif; margin:0; padding:0; display: flex; flex-direction: column; } /*Login*/ .FormCajaLogin { width: 100%; height: 100%; display: grid; background: url(fondo.png) no-repeat center center fixed; text-align:center; } .FormLogin { background-color: rgba(0, 0, 0, .5); width: 400px; margin: auto; padding: 2em; border-radius: 6px; color:white; border:0.1em solid black; text-align:center; } .TextoCajas { margin-left:8%; font-weight: bold; margin-top:4%; margin-bottom:4%; color:white; text-align:left; } .CajaTexto{ width: 80%; padding: 10px; font-size:1em; border-radius:5px; border:1px solid black; color:black; } .CheckBox1 { text-align:left; margin:5% auto 5% 10%; } .BtnRegistrar { width: 80%; text-decoration:none; padding: 10px 30px; cursor: pointer; border: 0; border-radius: 10px; border:1px solid black; font-size:18px; color:white; background-color: green; font-weight: bold; margin-bottom:5%; } .BtnLogin { width: 80%; padding: 10px 30px; cursor: pointer; border: 0; border-radius: 10px; border:1px solid black; font-size:18px; color:white; background-color: #1B68DF; font-weight: bold; margin-bottom:5%; } .NomUsuario { font-size:18px; color:white; word-break:break-all; } /*Panel*/ .BarraLateral { position: fixed; top: 0; left: 0; width: 200px; height: 100%; background-color: #1455B9; padding: 20px; box-sizing: border-box; text-align:center; } .BarraLateral ul { list-style: none; padding: 0; margin: 0; } .BarraLateral li { text-align:center; margin-bottom: 14px; padding: 12px 10px; border-radius:5px; border:2px solid black; background: linear-gradient(180deg,#259953,#015644); } .BarraLateral a { color: white; text-decoration: none; } .ContenedorPrincipal { margin-left: 200px; padding: 20px; box-sizing: border-box; text-align:center; } @media (max-width: 768px) { .BarraLateral { width: 100%; height: auto; position: relative; } .ContenedorPrincipal { margin-left: 0; } } /*Tabla*/ table { border-collapse: collapse; width: 100%; margin: 0 auto; background-color: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } th { background-color: #1455B9; color: white; } th, td { padding: 10px; text-align: center; border-bottom: 1px solid #dddddd; } .ContenedorTabla { margin-left: auto; margin-right: auto; max-width:1260px; width: 100%; } .BotonesUsuarios { text-align:center; display: inline-block; background:green; padding: 6px 10px; border-radius:6px; text-decoration: none; color:white; border:2px solid black; cursor:pointer; font-size: 16px; } /*CajaPopUp*/ .contenedor_popup { top: 50%; left: 50%; position: absolute; transform: translate(-50%,-50%); width:400px; transition: all 0.2s; background-color:white; } .caja_popup2 { display: block; position: absolute; padding:0; background-color:rgba(0, 0, 0, 0.5); width:100%; height:100%; }
A este proyecto se puede agregar lo siguiente.
- Nombre: LoginCrud1.rar
- Tamaño: 1.40 MB