Translate

viernes, 12 de julio de 2024

Sistema de Usuarios Dinámico con php y jquery


Este esquema básico te proporciona una estructura inicial para desarrollar un sistema de usuarios con PHP, jQuery y MySQLi. Recuerda siempre validar y sanear los datos del usuario para prevenir ataques de seguridad como inyección SQL.



Conexión a la base de datos (db_config.php):

<?php
$servername = "localhost";
$username = "usuario";
$password = "contraseña";
$dbname = "nombre_base_de_datos";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
?>


Formulario de registro (register.php):


Objetivo: Permitir que nuevos usuarios se registren en el sistema proporcionando un nombre de usuario y una contraseña.

Explicación:

Formulario de Registro: El formulario HTML (register.php) captura el nombre de usuario y la contraseña del usuario.


Procesamiento del Formulario (register.php): Cuando el usuario envía el formulario, PHP recibe los datos y los procesa. Primero, se establece una conexión con la base de datos. Luego, se utiliza SQL para insertar los datos del usuario en la tabla usuarios. Es importante usar password_hash() para almacenar de forma segura la contraseña en la base de datos.


<form id="register-form" method="post" action="register.php">
<input type="text" name="username" placeholder="Usuario" required>
<input type="password" name="password" placeholder="Contraseña" required>
<button type="submit">Registrar</button>
</form>



Manejo del registro (register.php):

<?php
include('db_config.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$sql = "INSERT INTO usuarios (username, password) VALUES ('$username', '$password')";
if ($conn->query($sql) === TRUE) {
echo "Usuario registrado correctamente";
} else {
echo "Error al registrar usuario: " . $conn->error;
}
}
$conn->close();
?>

 Inicio de sesión de usuarios


Objetivo: Permitir que usuarios registrados inicien sesión ingresando su nombre de usuario y contraseña.

Explicación:

Formulario de Inicio de Sesión: El formulario HTML (login.php) solicita al usuario su nombre de usuario y contraseña.


Procesamiento del Formulario (login.php): Cuando el usuario envía el formulario, PHP verifica si el nombre de usuario existe en la base de datos. Si existe, se compara la contraseña proporcionada con la contraseña almacenada (utilizando password_verify()). Si coinciden, se inicia una sesión para el usuario (session_start()) y se establece una variable de sesión ($_SESSION['username']) para mantener al usuario autenticado durante su visita al sitio.

<form id="login-form" method="post" action="login.php">
<input type="text" name="username" placeholder="Usuario" required>
<input type="password" name="password" placeholder="Contraseña" required>
<button type="submit">Iniciar sesión</button>
</form>

Manejo del inicio de sesión (login.php):
<?php
session_start();
include('db_config.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM usuarios WHERE username='$username'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) {
$_SESSION['username'] = $username;
echo "Inicio de sesión exitoso";
} else {
echo "Contraseña incorrecta";
}
} else {
echo "Usuario no encontrado";
}
}
$conn->close();
?>

Formulario de actualización de perfil (profile.php):

<form id="update-form" method="post" action="update_profile.php">
<input type="text" name="new_username" placeholder="Nuevo nombre de usuario">
<input type="password" name="new_password" placeholder="Nueva contraseña">
<button type="submit">Actualizar perfil</button>
</form>

Manejo de actualización de perfil (update_profile.php):


Objetivo: Permitir que los usuarios actualicen su nombre de usuario y/o contraseña.

Explicación:

Formulario de Actualización de Perfil: El formulario HTML (profile.php) permite al usuario ingresar un nuevo nombre de usuario y/o contraseña.


Procesamiento del Formulario (update_profile.php): Cuando el usuario envía el formulario, PHP recibe los datos y los procesa. Primero, actualiza el nombre de usuario y/o contraseña en la base de datos utilizando una sentencia SQL UPDATE. Es importante volver a hashear la contraseña utilizando password_hash() antes de almacenarla nuevamente.

<?php
session_start();
include('db_config.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$new_username = $_POST['new_username'];
$new_password = password_hash($_POST['new_password'], PASSWORD_DEFAULT);
$username = $_SESSION['username'];
$sql = "UPDATE usuarios SET username='$new_username', password='$new_password' WHERE username='$username'";
if ($conn->query($sql) === TRUE) {
$_SESSION['username'] = $new_username; // Actualizamos el nombre de usuario en la sesión si se cambió
echo "Perfil actualizado correctamente";
} else {
echo "Error al actualizar perfil: " . $conn->error;
}
}
$conn->close();
?>
Implementación de jQuery (ejemplo básico):

Objetivo: Hacer las interacciones más suaves y evitar recargar la página completa al enviar formularios.

Explicación:Implementación de jQuery: Se utiliza jQuery para capturar el evento de envío del formulario de inicio de sesión ($('#login-form').submit()). Se previene el comportamiento predeterminado del formulario (e.preventDefault()) para evitar que la página se recargue. En su lugar, se utiliza $.ajax() para enviar los datos del formulario al servidor de forma asíncrona. Cuando el servidor responde (success: function(response)), se muestra la respuesta (por ejemplo, un mensaje de éxito o error) utilizando alert() o actualizando dinámicamente la página según la respuesta recibida.
Consideraciones de Seguridad

Validación de Datos: Siempre se deben validar y sanear los datos del usuario para prevenir ataques como la inyección SQL.

Almacenamiento de Contraseñas: Nunca se debe almacenar las contraseñas en texto plano. Siempre se debe utilizar password_hash() para almacenarlas de forma segura y password_verify() para verificarlas.

Sesiones: Utilizar session_start() para iniciar la sesión del usuario y $_SESSION para mantener la información de sesión segura.

Este esquema básico proporciona una estructura inicial para desarrollar un sistema de usuarios robusto utilizando PHP, jQuery y MySQLi. Es fundamental entender cada parte del proceso para garantizar la seguridad y la funcionalidad del sistema.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#login-form').submit(function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: 'login.php',
data: $(this).serialize(),
success: function(response){
alert(response); // Mostrar respuesta del servidor
// Puedes redirigir o realizar otras acciones según la respuesta
}
});
});
});
</script>

Este esquema básico te proporciona una estructura inicial para desarrollar un sistema de usuarios con PHP, jQuery y MySQLi. Recuerda siempre validar y sanear los datos del usuario para prevenir ataques de seguridad como inyección SQL.

No hay comentarios.:

Publicar un comentario