login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Foto-dir beveiligen, fotos wel laden in (met session beveiligde) foto pagina.

Offline Ghostaq - 23/01/2005 15:24 (laatste wijziging 23/01/2005 15:26)
Avatar van GhostaqNieuw lid Hallo,

Ik probeer een foto album te maken waarbij de gebuiker moet inloggen om de fotos te kunnen zien. Maar nu wil ik uiteraard de directory waar de fotos in staan beveiligen zodat ze enkel voor ingelogde gebruikers te zien zijn.

Nu heb ik via .htaccess het een en ander geprobeerd maar daarmee kon ik wel de dir beveiligen met een password, maar dat wil ik dus niet, want de gebruiker logt ergens anders op mijn site al in. Ook kon ik de dir Forbidden maken, maar dan las mijn php script de fotos ook niet en werden ze dus niet geladen..

Is er een mogelijkheid om de foto dir zo te beveiligen dat de fotos alleen door mijn php-script gelezen kunnen worden en verder helemaal niet? Dus als ik dan www.domein.nl/fotos/foto1.jpg intik er gewoon een Forbidden error komt te staan, en als ik via de site inlog en de fotos via mijn script bekijk hij foto1.jpg wel laat zien?

Alvast bedankt voor de hulp!

Grtz
Gq

12 antwoorden

Gesponsorde links
Offline numlockrond - 23/01/2005 15:42 (laatste wijziging 23/01/2005 15:43)
Avatar van numlockrond Onbekend als je een .htaccess bestand met "deny from all" in de map zet zou je wel iets met php moeten kunnen.

Ik gebruik ook zoiets, zodat ik een bestand wel kan includen maar dat het niet rechtstreeks te laden is.

Ik weet alleen niet of het dan ook werkt met readdir() (Misschien bedoelde je dat met "Ook kon ik de dir Forbidden maken, maar dan las mijn php script de fotos ook niet en werden ze dus niet geladen.." ?)
Offline Ghostaq - 23/01/2005 17:37
Avatar van Ghostaq Nieuw lid Ja precies, ik had 'deny from all' ook geprobeerd, maar dan kon ik de fotos dus niet laden met readdir() 
Scripts etc kan je idd wel gewoon laden..
Offline lau - 23/01/2005 17:55
Avatar van lau HTML interesse Zoiets heb ik ook en wil ook een dir die beveiligd wordt tegen directe link.
Offline Klopper - 23/01/2005 18:04 (laatste wijziging 23/01/2005 18:06)
Avatar van Klopper HTML interesse Ik heb wel een aparte oplossing hiervoor, maar je kan dan geen foto's toevoegen via het web, dus alleen via ftp.
Als je een betaalde host hebt, krijg je in je account een map 'html' of 'public_html'(/home/gebruiker/public_html/), als je in je home-map (/home/gebruiker/) een map aanmaakt met foto's (/home/gebruiker/images/) dan kan deze niet direct bereikt worden door mensen op het internet. Maar als je in je html-map ('html' of 'public_html') een beveiligd bestandje neerzet met daarin de link
  1. <img src='../images/plaatje.jpg'>

dan haalt hij de foto's daar gewoon op.;-)

Je kan het natuurlijk ook oplossen door je foto's/plaatjes in een database te plaatsen.
Offline Ghostaq - 23/01/2005 18:52
Avatar van Ghostaq Nieuw lid @lau

Voor dat direct link gebeuren kan je het volgende in je .htaccess bestand zetten:

  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://domeinnaam.nl/.*$ [NC]
  4. RewriteCond %{HTTP_REFERER} !^http://www.domeinnaam.nl/.*$ [NC]
  5. RewriteRule .*\.(gif|jpg)$ - [L]


Voor meer info: http://www.mijn...linken.php


@Klopper
Hm dat had inderdaad gekund ja.. Maar helaas heb ik alleen toegang tot '/var/www/html/', ik kan dus niets in onderliggende dirs plaatsen 

Maar wat bedoel je precies met "Je kan het natuurlijk ook oplossen door je foto's/plaatjes in een database te plaatsen." ??
Offline Klopper - 23/01/2005 19:16
Avatar van Klopper HTML interesse @Ghostaq
Waarom heb je geen toegang tot /var/www/html/ ?
Als je bij iemand anders je website onderbrengt komt je website altijd in /home/gebruiker/ of /home/gebruiker/public_html/ of /home/gebruiker/html/ te staan.

Het is mogelijk om plaatjes te plaatsen in een database, dit is niet bepaald gemakkelijk, en soms gaat het helemaal niet door bepaalde beperkingen. Ik kan je hierin helaas niet verder helpen, omdat ik me hier niet in heb verdiept.
Offline numlockrond - 23/01/2005 19:36
Avatar van numlockrond Onbekend wat je natuurlijk ook kan doen is de bestandsnamen in een db opslaan zodat je readdir() niet meer nodig hebt. Dan kun je de foto's aan de hand van die locatie uit de db includen in een php bestandje.
Voor het includen verstuur je een content-type header (dat moet er dus geen andere output zijn) en dat php bestand roep je dan aan als <img src="foto.php?id=5">.

(Ik hoop dat je het snapt)
Offline Ghostaq - 23/01/2005 19:44
Avatar van Ghostaq Nieuw lid @Klopper
Ik heb wel toegang tot /var/www/html 
Maar dat is dus mijn hoofd dir (daar staat mijn site ook in) ik kan niet nog een dir terug.. /var/www/ bijvoorbeeld..

"Als je bij iemand anders je website onderbrengt komt je website altijd in /home/gebruiker/ of /home/gebruiker/public_html/ of /home/gebruiker/html/ te staan."
Blijkbaar niet altijd want bij mij staat alles dus in de map html (var/www/html/)..


@numlockrond
Ok, maar als ik de plaatjes zou aanroepen met src=fotos.php?id=5 en in de database geef ik aan dat de foto met id=5 in de (beveiligde dir) /fotos/ staat laat het script de foto dan wel zien? Want ik heb in /fotos/ een .htaccess staan met 'deny from all'..?
Offline numlockrond - 23/01/2005 20:22 (laatste wijziging 23/01/2005 20:22)
Avatar van numlockrond Onbekend in foto.php controleer je eerst of de foto wel bekeken mag worden, dan haal je de foto met id 5 op. dan krijg je bijv. de locatie "fotos/foto45.jpg" en dan verstuur je de header en vervolgens include je de foto (bij mij werkt includen van bestanden uit een map met "deny from all" gewoon).

  1. <?php
  2.  
  3. if(/*controleren of foto bekeken mag worden*/){
  4.  
  5. //als dat mag query uitvoeren
  6.  
  7. //locatie van foto, moet je dus uit db halen
  8. $locatie = 'fotos/foto45.jpg';
  9.  
  10. }else{
  11.  
  12. //mag niet bekeken worden » toon error plaatje
  13. $locatie = 'fotos/geen_toestemming.jpg';
  14.  
  15. }
  16.  
  17. header('Content-type: image/jpeg');
  18.  
  19. include($locatie);
  20.  
  21. ?>
Offline Ghostaq - 23/01/2005 21:17 (laatste wijziging 23/01/2005 21:18)
Avatar van Ghostaq Nieuw lid Hmm ik heb even wat zitten knutselen maar ik kom er echt niet uit..

In album.php kijk ik of de user ingelogged is.
Zoja, dan moet de foto uit de map /albums/album01/ geladen worden (in albums staat een .htacces 'deny from all')

foto.php plaats ik gewoon naast album.php
Moet ik dan in album.php <img src="foto.php"> aanroepen?

Ow btw:
"bij mij werkt includen van bestanden uit een map met "deny from all" gewoon"
Heb je dat ook wel is met afbeeldingen gedaan?
Offline Klopper - 23/01/2005 22:31
Avatar van Klopper HTML interesse Ach, ik weet misschien al wat het probleem is dat je niet in /var/www/ kan komen 
Je moet bij je FTP-programma aangeven dat je wil werken via SSH. Daarmee kan je overal in je server komen. Als er bij je FTP-programma geen SSH-ondersteuning is moet je een FTP-programma downloaden dat het wel ondersteund zoals: CoreFTP (www.coreftp.com)
Offline Ghostaq - 24/01/2005 09:47
Avatar van Ghostaq Nieuw lid Ik denk niet dat het aan mijn ftp programma ligt hoor..
Ik heb gewoon geen rechten om in andere dirs te komen, zo heeft mijn hosting bedrijf het gewoon ingesteld..
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.191s