Avatar billede 4b4 Nybegynder
04. april 2005 - 14:39 Der er 9 kommentarer og
1 løsning

Beskyttelse af billeder

Jeg har et billedgallery site hvor jeg har fået lavet et PHP login system så alle ikke kan se billederne.. MEN er det muligt at gøre så man heller ikke kan paste direkte url til billederne, som er placeret på en ganske aldm. b-one webserver? og evt. hvordan?

se: http://billeder.bergsorensen.dk
Avatar billede coderdk Praktikant
04. april 2005 - 14:51 #1
Jep, flot. Der er en loginside? ;)
Avatar billede 4b4 Nybegynder
04. april 2005 - 14:52 #2
læs spørgsmålet! billederne er placeret i ganske aldm. mapper/folders ..
Avatar billede coderdk Praktikant
04. april 2005 - 14:52 #3
Men ellers noget i stil med dette, showpicture.php:

<?php

  if ( !preg_match( "/" . $_SERVER['HTTP_HOST'] . "/i", $_SERVER['HTTP_REFERER'] ) )
  {
      header( 'Content-Type: image/jpeg' );
      readfile( 'ingen_direkte_links.jpg' );
      exit;
  }

  $fil = basename( $_GET['fil'] );
  header( 'Content-Type: image/jpeg' );
  readfile( 'billedmappe/' . $_GET['fil'] );

?>

Den kalder du så med: showpicture.php?fil=hest.jpg
Avatar billede 4b4 Nybegynder
04. april 2005 - 14:52 #4
pass: sørensen/sørensen
Avatar billede coderdk Praktikant
04. april 2005 - 14:54 #5
Hmm ok, hvis du bruger sessions til din login, kan du jo bare checke for det i stedet:

<?php

  if ( !empty( $_SESSION['din_login_variabel'] ) )
  {
      header( 'Content-Type: image/jpeg' );
      readfile( 'ingen_direkte_links.jpg' );
      exit;
  }

  $fil = basename( $_GET['fil'] );
  header( 'Content-Type: image/jpeg' );
  readfile( 'billedmappe/' . $_GET['fil'] );

?>

Eller en kombination ;)
Avatar billede coderdk Praktikant
04. april 2005 - 14:55 #6
Erh, !empty() skulle være empty()
Avatar billede 4b4 Nybegynder
04. april 2005 - 14:56 #7
Filerne vil jo stadig være direkte tilgængelige via aldm. url .. Kan man ikke smide dem i en lukket folder og så hente dem via. php og KUN gennem php ? ligesom man normalt gør med databaser når man ønsker høj sikkerhed?
Avatar billede coderdk Praktikant
04. april 2005 - 15:02 #8
Jo, du kan smide dine billedmapper ud af web-scope, eller lave en .htaccess i "roden" af din billedmappe der deny'er alt, og så lade alle requests gå igennem f.eks. showpicture.php...

Hvis du har din folderstruktur sådan:

/ (webrod)
/billeder/ (billedrod)
/billeder/2001 Fars foedselsdag (f.eks.)
(osv)

Så lav en .htaccess i /billeder:

Order deny,allow
Deny from all

Så er det kun dit /showpicture.php script der kan tilgå dem...
Avatar billede 4b4 Nybegynder
04. april 2005 - 15:16 #9
kigger på det. smider du et svar ? :)
Avatar billede coderdk Praktikant
04. april 2005 - 15:17 #10
Yes :) Hvis der er mere ang. dette, kan du bare skrive her igen :)
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