Jeg ville dele problemet er op to dele.
1) Vi skal sikre os at brugeren kun at se sine egne filer
2) Vi skal fysisk lagre filerne - og eventuelt givet dem til brugeren
1) Ville jeg bruge mysql til. Forstil dig en tabel der indeholder f.x: id, ejer, filnavn, mime-type .. etc.
Hvis brugeren så uploader et jpeg, så vil vi have en række:
id=1, ejer=dennis, filnavn=homepage.jpg, mime-type=image/jpeg
Når vi skal så lave webinterface, og brugeren skal have vist sine filer, så checker du om brugeren er logget ind og selecter du bare hvor ejer=<brugernavn> .. Indtil videre har du ikke eksponeret din rigtig fil.
2) Selve filen gemmes i et directory (som man ikke skal kunne se fra webserveren). F.eks kan du overveje at rename dem til id-nummeret på den række i tabllen du har lavet tilsvarende. På den måde får du ikke problemer med, at to uploader en fil med samme filnavn, da den ene vil f.x hedde 1 og den anden 2.
Når brugeren skal kunne se/hente filen, skal du bruge dit id fra tabellen. Så han kalder f.x get.php?id=1
- Først chekker du om brugeren har ret til at se filen. Dette gøres via tabellen
- Så selecter du mime-type. (image/jpeg)
Dernæst outputter du headers (baseret på mime-type, evt cache-headers)
Og afslutningsvis bruger du fopen/fpassthru til at sende filen.
Nu er brugeren
Dennis Møllegaard Pedersen
http://dennis.moellegaard.dk