Justificació

La depuració és una fase essencial en qualsevol projecte de programació, ja que ens permet detectar i corregir errors abans que afectin l’experiència de l’usuari. En el nostre cas, hem treballat especialment la validació d’entrades, perquè és un punt crític: si un usuari introdueix un DNI incorrecte, un correu mal format o deixa un camp buit, el servidor pot fallar o guardar dades incorrectes.

Per això hem aplicat el principi de seguretat i integritat de dades, assegurant que:

  • Les entrades es validen abans de processar-les.
  • Els errors no fan caure el servidor.
  • Els missatges d’error són clars i útils.
  • Totes les accions queden registrades per facilitar la depuració.

Quan vaig començar a fer el servidor, em vaig adonar que si l’usuari escrivia alguna cosa malament, el programa es podia tancar de cop. Això no només és molest, sinó que també pot fer perdre dades i donar una mala experiència. Per això vaig decidir centrar-me en la depuració i en la validació d’entrades.

L’objectiu principal és evitar errors inesperats i assegurar que el servidor continua funcionant passi el que passi. A més, validar les dades també ajuda a mantenir la base de dades neta i coherent. Per exemple, si algú posa un correu sense “@”, o deixa el nickname en blanc, el programa ho detecta i avisa l’usuari en lloc de fallar.

En resum, la depuració en aquest projecte és important perquè millora la seguretat, evita que el servidor caigui i fa que l’usuari tingui una experiència més clara i controlada.

Per aconseguir que el servidor sigui estable, he utilitzat diferents tècniques de control d’errors i validació.

Implementació de la depuració

Els blocs try-except són la base del sistema. Serveixen per capturar errors que poden passar mentre es processen les dades del formulari. Si alguna cosa falla, el servidor no es tanca, sinó que mostra un missatge d’error i continua funcionant.

Un exemple és quan llegeixo les dades enviades pel formulari:

try:
    content_length = int(self.headers.get('Content-Length', 0))
    post_data = self.rfile.read(content_length).decode('utf-8')
except Exception as e:
    print("Error llegint dades:", e)

Això evita que un error de lectura faci caure tot el servidor.

També hem validat:

  • Format del correu
  • Longitud del DNI
  • Camps obligatoris

També he afegit validacions perquè les dades que arriben siguin correctes. Per exemple, comprovo que el nickname no estigui buit:

if not nickname:
    raise ValueError("El camp 'nickname' és obligatori.")

Això evita que s’enviïn registres incomplets a la base de dades.

Registre d’errors

Hem utilitzat la terminal per rastrejar errors complexos i entendre en quin punt del codi es produeixen.

Quan guardo les dades, utilitzo consultes parametritzades. Això és important perquè impedeix que algú pugui intentar injectar codi SQL dins dels camps del formulari.

cursor.execute("""
    INSERT INTO assistents 
    (nom, cognoms, nom_usuari, correu_electronic, telefon, dni_nie, dies_assistencia, intolerancies)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)
""", (...))

Durant les proves, he anat mirant la terminal per veure si hi havia errors, quines dades arribaven i si la base de dades s’actualitzava bé. Això m’ha ajudat a detectar problemes ràpidament i a entendre millor què passava en cada pas.

He afegit captures del formulari, del servidor funcionant i de la base de dades amb els registres guardats. Aquestes imatges mostren que el sistema funciona i que la depuració està aplicada correctament.

Conclusió

Aquest repte ens ha ajudat a entendre la importància de depurar el codi i validar les dades abans de processar-les. Gràcies a les proves i a la depuració, hem aconseguit un servidor més estable, segur i preparat per gestionar dades reals sense errors.