Ves al contingut principal

Upload d'arxius

L'upload de fitxers amb PHP és vital per carregar arxius al servidor. El formulari ha d'usar method="POST" i l'atribut crucial enctype="multipart/form-data". S'empra un camp d'entrada de tipus file. Sense aquests atributs, la pujada no funcionarà.

Processament

Un cop enviat, PHP gestiona les dades a través de l'array superglobal $_FILES, que conté detalls de l'arxiu:

  • $_FILES['arxiu']['name']: Nom original.

  • $_FILES['arxiu']['tmp_name']: La ruta temporal de l'arxiu al servidor.

  • $_FILES['arxiu']['size']: Mida en bytes.

  • $_FILES['arxiu']['error']: Codi d'error si n'hi ha.

La funció move_uploaded_file(string $tmp_name, string $destination) mou l'arxiu de la seva ubicació temporal a un directori permanent i accessible pel servidor.

Seguretat

  1. Validació: Mai s'ha de confiar en les dades de l'usuari. Cal validar estrictament la mida i el tipus MIME de l'arxiu per evitar la càrrega de fitxers massa grans o maliciosos (com scripts PHP executables).

  2. Renombratge: Cal generar un nom d'arxiu únic i aleatori (p. ex., amb uniqid()) abans de moure'l. Això prevé atacs de sobreescriptura (path traversal).

  3. Permisos: El directori de pujada ha de tenir els permisos adequats (idealment 755 o 775) i, si és possible, estar fora de l'accés directe del navegador web per evitar l'execució de codi nociu.

Configuració

Les directives a php.ini (com upload_max_filesize i post_max_size) limiten la mida màxima de la pujada. Un upload requereix una validació estricta i un ús correcte de move_uploaded_file.