Upload filer - PHP

Lær at bruge $_FILES og move_uploaded_file() i PHP så dine brugere kan uploade filer på din hjemmeside

Introduktion

Her på siden vil jeg forklare hvordan man laver en upload funktion på sin hjemmeside så brugerne kan uploade filer.

Upload funktionen består af 2 dele. HTML delen og PHP delen.

HTML delen består af en <form> hvor brugeren kan vælge den fil der skal uploades.

PHP delen står for at håndtere data fra formularen.

HTML delen


Når brugeren har valgt en fil og trykker på Upload fil så sendes formularens data til upload.php filen.

PHP delen

Følgende kode gemmes med det filnavn som er angivet i HTML formularens action attribut (upload.php).

Opret en mappe kaldet uploadmappe i roden af din hjemmesidemappe.

$_FILES er et array som indeholder data på den fil/filer som blev sendt med formularen.

$_FILES['filsomskaluploades'] skal passe med værdien af name attributten (<input type="file" name="filsomskaluploades">).

Når filen uploades gemmes den først i en midlertidig mappe med et midlertidig filnavn. For eksempel C:\Windows\Temp\php4659.tmp.

Når hele filen er uploadet flyttes den med move_uploaded_file().

Hvis alt gik som det skulle returner $_FILES['filsomskaluploades']['error'] værdien 0.
Hvis noget gik galt returnes et andet tal som man kan se betydningen af i fejlbeskeder.

HTML og PHP i én fil

I stedet for at have HTML delen og PHP delen i hver sin fil kan man samle koden i én fil.

Hvis $_SERVER['REQUEST_METHOD'] == 'POST' så betyder det at formularen er blevet sendt (Brugeren har trykket på Upload fil).

Min uploader kode

Her er min uploader kode som jeg brugte på min hjemmeside indtil December 2011 hvor jeg fjernede den fordi der ikke var det store behov for at brugerne kunne uploade filer.

Langt største delen (måske 90%) af de filer som blev uploadet var filer med PHP kode som forsøg på at få adgang til hjemmesiden.

Jeg regner ikke med at folk kan forstå alt min kode her men måske er der dele af koden som kan bruges.

Sikkerhed

Når man giver brugerne mulighed for at uploade filer så udgør det en sikkerhedsrisiko for din hjemmeside.

Nogle brugere vil uploade filer med kode i et forsøg på at få adgang til at din kildekode, se loginoplysninger i dine filer, slette eller ændre filer.

I Apache opsætningsfilen httpd.conf står hvilke filendelser der kan få udført PHP kode.

Da filer som ender med .php kan få udført PHP kode er det vigtigt at vi stopper det.

Det kan stoppes ved at filer som ender på .php ikke er tilladte at uploade.

Det kan også gøres ved at oprette en .htaccess fil i den mappe hvor de uploadede filer findes og skrive følgende i den.

Forsøger man at tilgå en fil med en filendelse som ikke er på listen så får man en 403 access denied fejl.

Fejlbeskeder

Maksimal upload størrelse

Her ses hvordan man kan fortælle brugeren hvor store filer der maksimalt kan uploades.

return_bytes funktionen

Her er return_bytes() funktionen der bruges i eksemplerne.

PHP indstillinger

Her er de indstillinger som har betydning for om man kan uploade filer, hvor store de må være, hvor længe det må tage og lignende.
1
96M
96M
536870912
60
50
Resultatet ovenfor er skabt af følgende kode

Skriv din kommentar

Spørg mig om hvad som helst
Du kan også skrive direkte til mig på
Stem
Søg
Language

Select English to navigate the website in English. Things like the navigation menu and contact form will be in English, but the main content on each page will not be translated.