Advanced Search
Search Results
618 total results found
Codeigniter service
Què és un Service a CI4? Tècnicament, un Service a CodeIgniter 4 és simplement un mètode dins de la classe App\Config\Services (que hereta de CodeIgniter\Config\BaseService). Actua com un Contenidor de Dependències (Service Locator). La seva responsabilitat ...
Auth filter
Exemple. AuthFilter Aquest és l'estàndard per protegir rutes privades. Si l'usuari no té sessió, el filtre "talla" l'execució i redirigeix, de manera que el controlador protegit mai arriba a executar-se. 1. Creació del Filtre (app/Filters/AuthFilter.php) ...
La BBDD: Migration + Model + Entity + Seeder
La BBDD. Migració Primer, definim l'estructura. El camp password serà un VARCHAR(255) per allotjar el hash generat per password_hash (Bcrypt/Argon2). Fitxer: app/Database/Migrations/2026-06-01-000001_CreateUsersTable.php PHP <?php name...
El filter Autentica
Filter (Autentica) Implementem la lògica d'autenticació. Important: hem de registrar l'àlies després de crear la classe. Fitxer: app/Filters/Autentica.php <?php namespace App\Filters; use CodeIgniter\Filters\FilterInterface; use CodeIgniter\HTTP\Requ...
Controller: login + auth + logout + dashboard
Controller (UserDemo) Fitxer: app/Controllers/UserDemo.php <?php namespace App\Controllers; use App\Controllers\BaseController; use App\Models\UserModel; class UserDemo extends BaseController { // Mostra el formulari public function logi...
Vistes: login/logout + dashboard
Pàgina login Fitxer: app/Views/userdemo/login.php <!DOCTYPE html> <html lang="ca"> <head> <meta charset="UTF-8"> <title>Login d'Usuari</title> <style> body { font-family: sans-serif; padding: 20px; } .alert { padding: 10px;...
Configuració de Routes
A l'arxiu app/Config/Routes.php, tens dues maneres principals d'aplicar el filtre autentica. Opció A: Aplicar a rutes individuals Això és útil si només tens una pàgina per protegir. $routes->get('userdemo/login', 'UserDemo::login'); $routes->post('userd...
Importar CSVs
A l'hora d'introduir informació en una base de dades, molt habitualment necessitarem incloure informació bàsica que ja podem obtenir d'un arxiu de dades tipus CSV, per incorporar-ho al projecte podem fer-ho amb dos enfocaments diferents: Inserció massiv...
Introducció a l'autenticació de dos factors
Què és l'Autenticació de Dos Factors (2FA)? L'autenticació de dos factors (2FA) és una capa de seguretat addicional que garanteix que qui intenta accedir a un compte és qui diu ser. El concepte es basa en la premissa que per a comprometre un compte, un atacan...
La llibreria 2FA
Instal·lació Per no haver de programar nosaltres l'algorisme matemàtic (HMAC-SHA1 i gestió de finestres de temps), utilitzarem la llibreria estàndard de la indústria en PHP. Bash composer require spomky-labs/otphp Per què ...
Comparativa llibreries PHP 2FA.
antonioribeiro/google2fa Vs spomky-labs/otphp Tot i que antonioribeiro/google2fa és extremadament popular (especialment en l'ecosistema Laravel), spomky-labs/otphp és una opció tècnicament superior per diversos motius. Flexibilitat d'algorismes (seguretat a ...
Base de dades
Migració: Actualització taula Users Necessitem dos camps nous: secret_2fa: Per guardar la clau privada (el secret compartit). active_2fa: Un interruptor per saber si l'usuari té el 2FA obligatori o no. Fitxer: app/Database/Migrations/2026-0...
La lògica de negoci
Lògica 2FA Activació: L'usuari va a /userdemo/setup-2fa. El servidor genera un secret i l'envia a la vista com un string especial (otpauth://...). JS converteix l'string en una imatge QR. L'usuari l'escaneja i envia un codi de prova. ...
Les vistes
Vista A: Configuració (app/Views/userdemo/setup_2fa.php) Utilitzarem qrcode.js per dibuixar el QR sense complicacions de servidor. <!DOCTYPE html> <html> <head><title>Configurar 2FA</title></head> <body> <h2>Configurar Doble Factor</h2> <p>1. ...
Les rutes
Caldrà afegir les rutes necessàries a app/Config/Routes.php. // ... rutes anteriors ... // Rutes per al procés de Login amb 2FA (Públiques, però requereixen sessió temporal) $routes->get('userdemo/verify-2fa', 'UserDemo::verify2faPage'); $routes->post('u...
L'edició: de l'HTML a l'UX
En el desenvolupament d'aplicacions web, sovint ens trobem amb la necessitat de permetre als usuaris crear contingut ric: articles de blog, descripcions de productes, comentaris amb format o butlletins de notícies. Si bé com a programadors estem còmodes escriv...
Summernote
Aquest és un exemple complet d'implementació d'un sistema de "Posts" (articles) amb l'editor Summernote, posant èmfasi en la seguretat. Migració Necessitem una taula que pugui guardar text llarg. El tipus de dada TEXT o LONGTEXT és l'adequat per al conting...
CKEditor 5 (Classic Build) Self-Hosted
A diferència de Summernote (que guarda les imatges en Base64 dins el text), CKEditor 5 està dissenyat per pujar les imatges al servidor de manera asíncrona. Això és molt més professional i eficient per a la base de dades, però requereix una mica més de lògic...
Seguretat AJAX a upload files de CKEditor
Aquest és un punt crític. Un endpoint de pujada d'arxius (upload-image) és, per definició, una porta oberta al servidor. Si no es protegeix, qualsevol bot podria omplir el teu disc dur o, pitjor, pujar un fitxer .php maliciós i executar-lo. Per assegurar que "...
i Markdown?
Markdown és una alternativa excel·lent i molt popular entre desenvolupadors (és el que fan servir GitHub, StackOverflow o Reddit). En lloc de guardar el resultat final (HTML), guardem el "codi font" del format (Markdown). Markdown vs. WYSIWYG (HTML): Anàlisi ...