PHP upload - tillad KUN video filer (hvordan?)

Tags:    programmering

Jeg kedede mig så begyndte at lave en upload funktion til min hjemmeside, for sjov, i PHP. Jeg vil kun tillade folk at uploade video filer (avi, mp3, wav, wmv) men kan ikke få det til at virke.

Her er mit upload script:
Fold kodeboks ind/udKode 

---------------------
Men kan simpelthen ikke få det til at virke, så man kun kan uploade udvalgte filtyper.
Eksempel:
Fold kodeboks ind/udKode 
Dette virker ikke. Hvis jeg tilføjer en "else"-statement bliver den automatisk aktiveret - også selvom jeg uploader en txt fil.

Har virkelig brug for hjælp :D



Det kan være at du skal gøre sådan:

Fold kodeboks ind/udKode 


Ved ikke om video/avi er det rigtige men ellers så prøv at søg på google :)



Tak for din tid! :D

*prøver at uploade txt fil*
Resultat: Filetype disallowed!
Så langt så godt.

*prøver ikke at uploade noget*
Resultat: Filetype disallowed!
Helt fint, nemt at fixe :D

*prøver at uploade mp3 fil .. tager sin tid*
Resultat: Filetype disallowed!
Knap så godt :(

*prøver at uploade wmv fil .. ændrede "video/mp3" til "video/wmv"*
Resultat: Filetype disallowed!
Nope virker ikke.

Jeg begynder at tro det har noget med .htaccess at gøre? Men er ikke ligefrem en ekspert på det område :)

Du mener vel sådan her, med koden?
Fold kodeboks ind/udKode 




Du kunne jo prøve at udskrive mimetype når den fejler. Så kan du se hvad den mener mimetypen er og hvis det giver mening ændre din kode til at acceptere den mimetype.

I tilfælde af txt filer tror jeg det er text/plain





I stedet for at teste på alle med if-else så lav i stedet et array med alle allowed types. Så bruger du funktionen in_array() til at tjekke om den er der.

In-array:
http://dk2.php.net/manual/en/function.in-array.php

Mime type liste:
http://www.webmaster-toolkit.com/mime-types.shtml

Håber det kan bruges.



Jeg er næsten lige startet på PHP, da jeg skulle lave nyt design til hjemmesiden.
Så jeg ved ærlig talt ikke hvordan jeg skal bruge in_array korrekt.

Tanken har slået mig og jeg har forsøgt - dog forkert fremgangsmåde.

Men med in_array() så tjekker den jo også om "txt" fx. er i filnavnet?
-- En kode ville være dejligt :)

------- Ligemeget, solved :D



Indlæg senest redigeret d. 04.07.2010 11:56 af Bruger #15985
Jeg er næsten lige startet på PHP, da jeg skulle lave nyt design til hjemmesiden.
Så jeg ved ærlig talt ikke hvordan jeg skal bruge in_array korrekt.

Tanken har slået mig og jeg har forsøgt - dog forkert fremgangsmåde.

Men med in_array() så tjekker den jo også om "txt" fx. er i filnavnet?
-- En kode ville være dejligt :)

------- Ligemeget, solved :D


Du kan heller ikke helt stole på den mimetype som PHP giver dig, for det er klienten, som sender den, og den kan forfalskes. Hvis du er på en Linux server kan 'file' kommandoen fortælle dig alt muligt:
Fold kodeboks ind/udKode 


Du kan bruge shell_exec eller en af de andre lignende funktioner til at udføre 'file' kommandoen.



t