Map beveiligen met PHP sessies

  • Onderwerp starter Onderwerp starter RikXP
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RikXP

Gebruiker
Lid geworden
6 mrt 2009
Berichten
789
Hoi,

Ik ben bezig om met PHP en .htaccess mappen en foto's af te schermen.

Ik wil graag dat zodra een gebruiker nog niet ingelogd is, hij bij het intypen van en bestandspad naar bijv een foto in de adresbalk de "forbidden" pagina te zien krijgt van Apache. Beter is nog dat hij dan doorgestuurd wordt naar een PHP login pagina die een sessie kan aanmaken zodat de map wel toegankelijk is.

Is dit misschien mogelijk met mod_rewrite of zo iets?
Het is wel een hele mond vol, maar ik hoop dat iemand zich er raad mee weet.

Alvast bedankt.
 
Om het veilig te maken zul je alle requests onder een bepaalde directory door een specifiek script moeten sluizen.
Dit script zal dan controleren of je ingelogd bent en eventueel de foto toont. (Let dus op de juiste headers etc.)
 
Oke. Dat 'sluizen' kan toch ook met .htaccess?

Weet jij hoe ik dat het beste kan doen?
Alvast bedankt.
 
Het zal en combinatie van .htaccess & php worden ja.
dus bijvoorbeeld alle requests onder /restricted/ doorsluzien naar /checkuser.php

Dit kan met een simpele RewriteRule.

Zeg anders wat je al hebt (geprobeerd), ik ga geen hele scripts voorkauwen.
 
Je kunt ook de foto's buiten de www directory zetten en ze met een script op laten halen, dan heb je helemaal geen .htaccess meer nodig.
 
Ja, dat klopt en dat is best wel een goed idee.
Maar is er ook een mogelijkheid om het met htaccess te doen? Het is ook de bedoeling dat er een directe link is naar de afbeelding kan worden gegeven, en als er niet ingelogd is moet de apache "forbidden" pagina worden weergegeven, of het loginscript.

@thadin: dat doorsluizen is idd wat ik wil, en heb ik ook al geprobeerd maar die regels in mijn htaccess file klopten niet.

Mijn bestandsstructuur is zo:

Auth (dir)
|- .htaccess
|- auth.php (hiernaartoe moet doorgesluisd worden.
|- protected (dir, dit is de map met de images)
 
Laatst bewerkt:
bijvoorbeeld zoiets in je .htaccess
Code:
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule protected/(.+) auth.php?file=$1
En dan in je auth.php $_GET['file'] afhandelen.
 
Bedankt. Dat ga ik proberen. Het ziet er goed uit.

Is het ook mogelijk dat je een apache "forbidden" pagina krijgt als je niet bent ingelogd?

Hiermee ben ik in ieder geval al een heel stuk verder geholpen. Ook door de tip van frats.

Bedankt allebei
 
Ik heb de code van thadin geprobeerd, en het omleiden werkt perfect.
Echter, als ik de afbeelding dmv $_GET aanroep tussen html img tags, wordt de afbeelding niet weergegeven.

De html-output van auth.php is dan:
Code:
<img src="http://rikbrugman.nl/auth/protected/flag_de.png" />

In de adresbalk staat: http://rikbrugman.nl/auth/protected/flag_de.png

is het mogelijk dat als ik de afbeelding tussen img tags aanroep, de afbeelding ook niet kan worden geladen, omdat er wordt verwezen naar auth.php?

als ik php readfile() gebruik loopt de browser vast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan