foto's beveiligen op website

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank

Frank

21/09/2008 17:54:00
Quote Anchor link
Beste collega-PHP'ers,

Ik heb de volgende vraag. Ik wil een soort fotodatabase maken waarbij men pas na het inloggen bepaalde foto's mag zien. Op zich is het inlogsysteem niet zo spannend en om te bepalen welke foto's wie mag zien stop ik ook in de DB maar hoe voorkom ik dat als men de fotonaam weet men rechtstreeks de foto aanroept via www.domain.com/fotonaam.jpg?

De foto's zouden dus in een beveiligde directory moeten staan maar hoe kan ik ze dan wel tonen als je ingelogd bent.

hoop dat iemand een idee heeft,

Gr,
Frank
 
PHP hulp

PHP hulp

22/12/2024 21:35:39
 
--

--

21/09/2008 18:01:00
Quote Anchor link
..
Gewijzigd op 01/01/1970 01:00:00 door --
 
- SanThe -

- SanThe -

21/09/2008 18:01:00
Quote Anchor link
Dit is al vele malen behandeld. Zoek op htaccess.
 
Frank

Frank

21/09/2008 20:54:00
Quote Anchor link
Beste Evert en SanThe,

Dat je met htaccess directories kan beveiligen weet ik. ik wil alleen een inlogvenster in mijn webpagina's en vanuit de database kunnen regelen welke foto's een bepaald account mag zien en welke niet.

Zover ik weet kan ik met htaccess een directory beveiligen en de daarin staande bestanden. Ik wil echter 1 grote map met bestanden en middels DB queries bepalen welke user welke file mag zien. Is zoiets ook mogelijk?

Ik heb al lopen zoeken op deze site en via google maar nog geen goede oplossing gevonden.

Gr,
Frank
 
--

--

21/09/2008 21:05:00
Quote Anchor link
..
Gewijzigd op 01/01/1970 01:00:00 door --
 
PHP Newbie

PHP Newbie

21/09/2008 21:17:00
Quote Anchor link
- Je hebt een map: www.site.nl/allefotos/ Daarin zet je de foto's

- Je maakt een .htaccess bestand wat er voor zorgt dat www.site.nl/fotos/foto.jpg uitkomt bij www.site.nl/foto.php?foto=foto.jpg

- In foto.php check je of een persoon het bestand mag zien, zo ja, laad het bestand in, zo nee, toon een error melding.
 
Frank

Frank

21/09/2008 21:19:00
Quote Anchor link
Hoi Evert,

Wat een snelle reactie.

Ik had vanmiddag even zitten testen, want ik zou ook verwcahten dat een PHP script er wel bij zou kunnen komen..

Beveiligde directory gemaakt
In een andere directory een script dat een image uit de beveiligde directory opvraagd. helaas kreeg ik dan de vraag om het wachtwoord.

Wat me wel ineens doet denken: als ik met HTaccess wel toegang geef aan het ip adres van de server (heb een private ip-adres) en aan niemand anders en dan laat opvragen. wellicht dat het dan werkt. bedoel je zo iets?

ik zal nog wat gaan testen. Als je nog tips/ideeen hebt hoor ik het graag..

Gr,
Frank
 
Ed

Ed

21/09/2008 21:36:00
Quote Anchor link
1> Een foto kan ook opgeslagen worden in de database.
2> Je kan met uploaden ervoor kiezen willekeurige bstandsnamen aan te maken, stukken moeilijker raden voor de anderen
3> Je kan in php credentials meegeven voor de login van htaccess, dit is de meest geschikte methode lijkt mij zo in jouw geval. ( $_SERVER['PHP_AUTH_USER'] en $_SERVER['PHP_AUTH_PW'] )
 
Jan Koehoorn

Jan Koehoorn

21/09/2008 22:01:00
Quote Anchor link
Danny schreef op 21.09.2008 21:36:
1> Een foto kan ook opgeslagen worden in de database.

Nooit doen, tenzij je op byte-niveau vergelijkingen wilt gaan maken tussen foto's. Het maakt je DB een heel stuk trager.
 
--

--

22/09/2008 08:07:00
Quote Anchor link
..
Gewijzigd op 01/01/1970 01:00:00 door --
 
Jurgen assaasas

Jurgen assaasas

22/09/2008 09:27:00
Quote Anchor link
Gewoon een kwestie van goede rechten instellen. Tenzij je Windows gebruikt dan heeft dat weinig zin.
 
Joren de Wit

Joren de Wit

22/09/2008 09:41:00
Quote Anchor link
Vergeet het hele .htaccess verhaal, het kan allemaal veel makkelijker!

Plaats de foto's in een map die zich buiten je webroot bevindt. Op die manier zijn foto's nooit meer via een directe url op te vragen en zijn ze alleen nog via het filesystem van de server (waar PHP wel toegang tot heeft) te benaderen.

Voor het weergeven van een foto gebruik je dan dus ook een PHP script. In dit script kun je dan eerst controleren of de opgevraagde foto (uit een GET variabele) door de betreffende gebruiker bekeken mag worden. Zo ja, dan output je de foto door de juiste headers mee te geven. Zo niet, dan zou je een standaard afbeelding kunnen outputten waaruit blijkt dat de gebruiker geen toegang heeft tot die foto.

Op de pagina waar je de foto's daadwerkelijk weer wilt geven, kun je gewoon een <img> tag gebruiken die er bijvoorbeeld als volgt uitziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="getfoto.php?id=1032" />

Op getfoto.php bepaal je vervolgens adhv het id en de database om welke foto het gaat, controleer je of de gebruiker toegang heeft, en toon je eventueel de foto...

ps. Uiteraard zou je de controle of iemand toegang heeft tot een foto ook in een eerder stadium kunnen doen. Het enige dat getfoto.php dan nog hoeft te doen is de juiste foto uit de map laden en outputten als afbeelding.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Frank

Frank

22/09/2008 10:12:00
Quote Anchor link
Hallo allemaal,

ik heb zojuist de volgende zaken getest:

Testopstelling:
www.domein.nl/foto.php aangemaakt met de volgende code:
<img src="./plaatjes/plaatje.gif">

in www.domein.nl/plaatjes/ een htaccess file met een redirect voor alle files naar de foto.php.
Deze redirect werkt en foto.php wordt netjes aangeroepen. Plaatjes worden echter niet getoont maar het bekende vakje met het rode kruisje

Verder heb ik de optie van Evert getest door in de plaatjes directpry een htaccess te maken waarin de volgende code staat:

order allow,deny
deny from all

Ik kom inderdaad niet meer in de plaatjes map maar ook foto.php geeft weer een rood kruisje.

Hoop dat jullie me verder kunnen helpen met wat extra scripts.

Gr,
Frank
 
Joren de Wit

Joren de Wit

22/09/2008 11:10:00
Quote Anchor link
En mijn oplossing dan?
 
Frank

Frank

22/09/2008 13:40:00
Quote Anchor link
Hoi Blanche,

Ik heb die van jou nog niet getest. Ik had mijn browser niet meer ververst toen ik mijn bericht aan het typen was en aan het testen was...

Ik ga het nog testen maar ben nu eerst even met wat anders bezig. Laat het weten zodra ik getest heb.

Gr,
Frank
 
Frank

Frank

08/10/2008 15:34:00
Quote Anchor link
Hallo,

Eindelijk weer tijd gehad om te testen. En jawel de optie van Blanche is een goeie! Thanks.
Het was even kijken hoe ik via een php script de foto moest tonen. Dus voor degenen die hetzelfde probleem hebben:

<code>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

// hier kan de code komen te staan voor controle of de afbeelding getoond mag worden
$im = imagecreatefromjpeg("../plaatjes/beveiligd.jpg");
header('Content-type: image/jpeg');
// Output the image
imagejpeg($im);
// Free up memory
imagedestroy($im);
?>

</code>

Groetjes,
Frank
 
Fortfort x

fortfort x

20/10/2008 22:21:00
Quote Anchor link
Bij one.com is het niet mogelijk om content buiten de webroot te plaatsen, heb je dan nog een idee Blanche?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.