Avatar billede roz Nybegynder
07. december 2007 - 10:00 Der er 8 kommentarer og
1 løsning

Fjerne http adgang til billeder

Hejsa,

tænkte på hvordan det er man gør så brugere af ens hjemmeside ikke blot kan skrive url'en på et billede for at se det? Men så billedet stadigvæk kan vises på hjemmesiden ved brug af PHP.

Mente bare man kunne smide en htaccess med password i mappen med billederne men nu vises de heller ikke der hvor jeg bruger normale img tags. Så hvordan er det man gør det rigtigt? :)
Avatar billede j4k0b Nybegynder
07. december 2007 - 10:41 #1
Jeg har ikke lige et forslag i koder jeg kan smide, men jeg kan da forklare det med ord:

1) Opret en mappe hvor du ligger alle billederne i. Der skal ikke være adgang til denne mappe direkte, så den skal nok placeres udenfor din htdocs mappe.

2) Lav en PHP fil der tager et argument (f.eks. filnavn eller ID). Din PHP side skal:
    - Tjekke om filen eksisterer (hvis filen ikke eksisterer kan du lave en Fejl 404 med header("HTTP/1.0 404 Not Found");)
    - Indlæse filen ved brug af fopen()
    - Sætte en header() der svarer til billedets filtype, f.eks. header('Content-Type: image/jpeg') hvis det er et JPG/JPEG billede
    - Printe filens binære data ved brug af fread()


Med denne metode kan du f.eks. tjekke om en bruger et logget ind før han får lov til at se billedet. Hvis han ikke er, kan du evt. læse et billede hvor du skriver noget i stil med "Adgang Nægtet" eller lign.

Spørg hvis du er i tvivl.


http://php.net/header
http://php.net/fopen
http://php.net/fread
http://php.net/print
Avatar billede j4k0b Nybegynder
07. december 2007 - 10:42 #2
Når du i øvrigt skal indsætte billedet på din hjemmeside skal du skrive:

<img src="minfil.php?file=billede.jpg">
Avatar billede j4k0b Nybegynder
07. december 2007 - 10:46 #3
Du kan også bruge readfile() i stedet for fopen() og fread():

http://php.net/readfile
Avatar billede nielle Nybegynder
07. december 2007 - 10:57 #4
Måske kan du bruge denne artikel:

http://ryanfait.com/articles/2007/05/23/protect-flash-swf-files-from-download/

Den handler godt nok om SWF-filer, men princippet burde uden probelemer kunne overføres til billeder.
Avatar billede roz Nybegynder
07. december 2007 - 17:53 #5
Tak for svarene begge to. Problemet med en mappe udenfor htdocs er lidt at det skal være muligt at uploade til mappen via hjemmesiden. Dvs. med en upload side lavet i php. Og det kan man vel ikke hvis man bruger en mappe udenfor htdocs? Vel? Hehe.

Men ellers er din ide ganske god j4k0b! Men det ville ikke virke med en mappe der blot var password beskyttet ved brug af htaccess vel?
Avatar billede j4k0b Nybegynder
07. december 2007 - 18:44 #6
1) Du kan sagtens uploade filer til en mappe udenfor htdocs, så længe du har adgang til den
2) Hvis du password beskytter mappen med htaccess, så skal gæsten indtaste brugernavn og adgangskode for at se billederne i mappen, også selvom du blot indsætter et billede derfra på din hjemmeside. Det er ikke en god løsning
Avatar billede roz Nybegynder
08. december 2007 - 11:49 #7
Så fik jeg det lavet med din metode j4k0b! :) Men lige et spørgsmål mere: Som det er nu kan man jo bare kalde den php fil der genererer billedet i adresselinjen hvis man keder id'et på filen og så viser den billedet. Er det muligt (i phpfilen) at tjekke om denne kaldes på en bestemt side eller blot for sig selv og så kun udskrive hvis det er på en bestemt side?
Avatar billede j4k0b Nybegynder
08. december 2007 - 20:04 #8
Måske kan du bruge $_SERVER["HTTP_REFERER"] til det formål. Jeg er ikke sikker.

Prøv evt. print_r($_SERVER) og se om der er noget du kan bruge.
Avatar billede roz Nybegynder
09. december 2007 - 14:19 #9
Okay jeg siger tak for hjælpen og ideerne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester