Registre d'usuaris: diferència entre les revisions
Es crea la pàgina amb «== Inicialització de la sessió i connexió a la BD == En aquest cas, no cal iniciar la sessió en aquesta pàgina, ja que no requerim recuperar ni desar cap informació En canvi, hem de requerir el fitxer amb les funcions i una connexió a la BD. En aquest cas, per registrar un usuari, necessitem modificar la BD per afegir-lo, per tant farem servir la connexió d'escriptura.<pre> require 'funcions.php'; requ...». |
Cap resum de modificació |
||
| Línia 5: | Línia 5: | ||
require 'funcions.php'; | require 'funcions.php'; | ||
require './connexioBD/connexioRW.php'; | require './connexioBD/connexioRW.php'; | ||
</pre> | |||
== Formulari de registre d'usuari == | |||
Un usuari es registra mitjançant un formulari de registre, el qual incorpora la següent informació | |||
* Nom d’usuari (únic en l’aplicació) | |||
* Contrasenya | |||
* Nom complet | |||
* Email (únic en l’aplicació) | |||
* Telèfon (únic en l’aplicació) | |||
* Ciutat | |||
* Edat | |||
Totes les dades han de ser emplenades obligatòriament. Posteriorment, es faran verificacions bàsiques per assegurar que les dades són reals. | |||
El nom d'usuari, el correu electrònic i el telèfon són dades úniques que no es poden repetir a l'aplicació, per tant l'usuari no pot introduir cap valor d'aquests camps que un altre usuari ja hagi registrat | |||
La pàgina inclou un botó de navegació que dirigeix a l'usuari a que iniciï sessió en cas que ja tingui un compte a l'aplicatiu | |||
El formulari de registre es visualitzaria de la següent forma | |||
[[Fitxer:FormulariRegistreUsuari.png|center|miniatura|606x606px]] | |||
== Procés de registre == | |||
=== Comprovacions bàsiques === | |||
=== Enregistrament de l'usuari === | |||
== Mostra de missatges d'error o èxit == | |||
== Codi complet == | |||
<pre> | |||
<?php | |||
// No necessitem iniciar la sessió ja que no s'utilitza en aquest codi | |||
require 'funcions.php'; | |||
require './connexioBD/connexioRW.php'; | |||
// Inicialitzem la variable que mostra els errors | |||
$error = ''; | |||
if ($_SERVER['REQUEST_METHOD'] === 'POST') { | |||
// Recuperem les dades enviades pel formulari | |||
$nom_usuari = trim($_POST['nom_usuari']); | |||
$contrasenya = $_POST['contrasenya']; | |||
$nom_complet = trim($_POST['nom_complet']); | |||
$email = trim($_POST['email']); | |||
$telefon = trim($_POST['telefon']); | |||
$ciutat = trim($_POST['ciutat']); | |||
$edat = $_POST['edat']; | |||
// Verifiquem que cap camp estigui buit | |||
if (empty($nom_usuari) || empty($contrasenya) || empty($nom_complet) || empty($email) || empty($telefon) || empty($ciutat) || empty($edat)){ | |||
$error = "Manca algun camp"; | |||
} | |||
// Verifiquem que l'email sigui realment un email | |||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { | |||
$error = "L'email introduït no és vàlid"; | |||
} | |||
// Verifiquem que el telèfon sigui vàlid | |||
if (strlen($telefon) > 9) { | |||
$error = "Telèfon no vàlid"; | |||
} | |||
// Verifiquem que la ciutat sigui vàlida | |||
if (strlen($ciutat) > 100) { | |||
$error = "Ciutat no vàlida"; | |||
} | |||
// Verifiquem que l'edat sigui vàlida | |||
if ($edat < 0 || $edat > 120) { | |||
$error = "Edat no vàlida"; | |||
} | |||
// En cas que no hagi hagut cap error en les comprobacions | |||
if ($error === ''){ | |||
try { | |||
// Comprobar si l'usuari, email o telèfon ja existeixin | |||
$stmt = $pdo->prepare("SELECT * FROM usuaris WHERE nom_usuari = ? OR email = ? OR telefon = ?"); | |||
$stmt->execute([$nom_usuari, $email, $telefon]); | |||
if ($stmt->fetch()) { | |||
$error = "El nom d'usuari, email o telèfon ja existeix."; | |||
} else { | |||
// Insertar usuari amb contrasenya encriptada | |||
$hash = encriptar_contrasenya($contrasenya); | |||
$stmt = $pdo->prepare(" | |||
INSERT INTO usuaris | |||
(nom_usuari, contrasenya, nom_complet, email, telefon, ciutat, edat) | |||
VALUES (?, ?, ?, ?, ?, ?, ?) | |||
"); | |||
$stmt->execute([ | |||
$nom_usuari, | |||
$hash, | |||
$nom_complet, | |||
$email, | |||
$telefon, | |||
$ciutat, | |||
$edat | |||
]); | |||
// Registrar activitat | |||
$usuari_id = $pdo->lastInsertId(); // Recuperem la ID de l'usuari inserit abans | |||
registrar_activitat($pdo, $usuari_id, 'registre'); // Registrem l'acció "registre" a l'usuari creat anteriorment | |||
// Redirigir a login | |||
header('Location: login.php'); | |||
exit; | |||
} | |||
} catch (PDOException $e) { | |||
$error = "Error en registrar l'usuari. Motiu: " . $e->getMessage(); | |||
} | |||
} | |||
} | |||
?> | |||
<!DOCTYPE html> | |||
<html lang="ca"> | |||
<head> | |||
<meta charset="UTF-8"> | |||
<title>Crea el teu compte</title> | |||
<link rel="stylesheet" href="./css/registre.css"> | |||
</head> | |||
<body> | |||
<div class="register-container"> | |||
<header class="register-header"> | |||
<h2>Crea el teu compte</h2> | |||
<p>Uneix-te a la nostra comunitat en pocs segons</p> | |||
</header> | |||
<?php if ($error): // En cas que hi hagi un error es mostrarà?> | |||
<div class="alert alert-error"><?= htmlspecialchars($error) ?></div> | |||
<?php endif; ?> | |||
<form method="post" class="register-card"> | |||
<div class="form-section"> | |||
<h3>Informació de compte</h3> | |||
<div class="input-grid"> | |||
<div class="input-group"> | |||
<label>Nom d'usuari</label> | |||
<input type="text" name="nom_usuari" required autofocus> | |||
</div> | |||
<div class="input-group"> | |||
<label>Contrasenya</label> | |||
<input type="password" name="contrasenya" required> | |||
</div> | |||
</div> | |||
<hr class="divider"> | |||
<h3>Dades personals</h3> | |||
<div class="input-group"> | |||
<label>Nom complet</label> | |||
<input type="text" name="nom_complet" required> | |||
</div> | |||
<div class="input-group"> | |||
<label>Correu electrònic</label> | |||
<input type="email" name="email" required> | |||
</div> | |||
<div class="input-grid"> | |||
<div class="input-group"> | |||
<label>Telèfon</label> | |||
<input type="text" name="telefon" required> | |||
</div> | |||
<div class="input-group"> | |||
<label>Edat</label> | |||
<input type="number" name="edat" min="0" max="120" required> | |||
</div> | |||
</div> | |||
<div class="input-group"> | |||
<label>Ciutat</label> | |||
<input type="text" name="ciutat" required> | |||
</div> | |||
</div> | |||
<button type="submit" class="btn-register">Registrar-me ara</button> | |||
<div class="register-footer"> | |||
Ja tens un compte? <a href="./login.php">Inicia sessió</a> | |||
</div> | |||
</form> | |||
</div> | |||
</body> | |||
</html> | |||
</pre> | </pre> | ||
Revisió del 16:59, 10 gen 2026
Inicialització de la sessió i connexió a la BD
En aquest cas, no cal iniciar la sessió en aquesta pàgina, ja que no requerim recuperar ni desar cap informació
En canvi, hem de requerir el fitxer amb les funcions i una connexió a la BD. En aquest cas, per registrar un usuari, necessitem modificar la BD per afegir-lo, per tant farem servir la connexió d'escriptura.
require 'funcions.php'; require './connexioBD/connexioRW.php';
Formulari de registre d'usuari
Un usuari es registra mitjançant un formulari de registre, el qual incorpora la següent informació
- Nom d’usuari (únic en l’aplicació)
- Contrasenya
- Nom complet
- Email (únic en l’aplicació)
- Telèfon (únic en l’aplicació)
- Ciutat
- Edat
Totes les dades han de ser emplenades obligatòriament. Posteriorment, es faran verificacions bàsiques per assegurar que les dades són reals.
El nom d'usuari, el correu electrònic i el telèfon són dades úniques que no es poden repetir a l'aplicació, per tant l'usuari no pot introduir cap valor d'aquests camps que un altre usuari ja hagi registrat
La pàgina inclou un botó de navegació que dirigeix a l'usuari a que iniciï sessió en cas que ja tingui un compte a l'aplicatiu
El formulari de registre es visualitzaria de la següent forma

Procés de registre
Comprovacions bàsiques
Enregistrament de l'usuari
Mostra de missatges d'error o èxit
Codi complet
<?php
// No necessitem iniciar la sessió ja que no s'utilitza en aquest codi
require 'funcions.php';
require './connexioBD/connexioRW.php';
// Inicialitzem la variable que mostra els errors
$error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Recuperem les dades enviades pel formulari
$nom_usuari = trim($_POST['nom_usuari']);
$contrasenya = $_POST['contrasenya'];
$nom_complet = trim($_POST['nom_complet']);
$email = trim($_POST['email']);
$telefon = trim($_POST['telefon']);
$ciutat = trim($_POST['ciutat']);
$edat = $_POST['edat'];
// Verifiquem que cap camp estigui buit
if (empty($nom_usuari) || empty($contrasenya) || empty($nom_complet) || empty($email) || empty($telefon) || empty($ciutat) || empty($edat)){
$error = "Manca algun camp";
}
// Verifiquem que l'email sigui realment un email
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "L'email introduït no és vàlid";
}
// Verifiquem que el telèfon sigui vàlid
if (strlen($telefon) > 9) {
$error = "Telèfon no vàlid";
}
// Verifiquem que la ciutat sigui vàlida
if (strlen($ciutat) > 100) {
$error = "Ciutat no vàlida";
}
// Verifiquem que l'edat sigui vàlida
if ($edat < 0 || $edat > 120) {
$error = "Edat no vàlida";
}
// En cas que no hagi hagut cap error en les comprobacions
if ($error === ''){
try {
// Comprobar si l'usuari, email o telèfon ja existeixin
$stmt = $pdo->prepare("SELECT * FROM usuaris WHERE nom_usuari = ? OR email = ? OR telefon = ?");
$stmt->execute([$nom_usuari, $email, $telefon]);
if ($stmt->fetch()) {
$error = "El nom d'usuari, email o telèfon ja existeix.";
} else {
// Insertar usuari amb contrasenya encriptada
$hash = encriptar_contrasenya($contrasenya);
$stmt = $pdo->prepare("
INSERT INTO usuaris
(nom_usuari, contrasenya, nom_complet, email, telefon, ciutat, edat)
VALUES (?, ?, ?, ?, ?, ?, ?)
");
$stmt->execute([
$nom_usuari,
$hash,
$nom_complet,
$email,
$telefon,
$ciutat,
$edat
]);
// Registrar activitat
$usuari_id = $pdo->lastInsertId(); // Recuperem la ID de l'usuari inserit abans
registrar_activitat($pdo, $usuari_id, 'registre'); // Registrem l'acció "registre" a l'usuari creat anteriorment
// Redirigir a login
header('Location: login.php');
exit;
}
} catch (PDOException $e) {
$error = "Error en registrar l'usuari. Motiu: " . $e->getMessage();
}
}
}
?>
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Crea el teu compte</title>
<link rel="stylesheet" href="./css/registre.css">
</head>
<body>
<div class="register-container">
<header class="register-header">
<h2>Crea el teu compte</h2>
<p>Uneix-te a la nostra comunitat en pocs segons</p>
</header>
<?php if ($error): // En cas que hi hagi un error es mostrarà?>
<div class="alert alert-error"><?= htmlspecialchars($error) ?></div>
<?php endif; ?>
<form method="post" class="register-card">
<div class="form-section">
<h3>Informació de compte</h3>
<div class="input-grid">
<div class="input-group">
<label>Nom d'usuari</label>
<input type="text" name="nom_usuari" required autofocus>
</div>
<div class="input-group">
<label>Contrasenya</label>
<input type="password" name="contrasenya" required>
</div>
</div>
<hr class="divider">
<h3>Dades personals</h3>
<div class="input-group">
<label>Nom complet</label>
<input type="text" name="nom_complet" required>
</div>
<div class="input-group">
<label>Correu electrònic</label>
<input type="email" name="email" required>
</div>
<div class="input-grid">
<div class="input-group">
<label>Telèfon</label>
<input type="text" name="telefon" required>
</div>
<div class="input-group">
<label>Edat</label>
<input type="number" name="edat" min="0" max="120" required>
</div>
</div>
<div class="input-group">
<label>Ciutat</label>
<input type="text" name="ciutat" required>
</div>
</div>
<button type="submit" class="btn-register">Registrar-me ara</button>
<div class="register-footer">
Ja tens un compte? <a href="./login.php">Inicia sessió</a>
</div>
</form>
</div>
</body>
</html>