Voor een site moet ik wat diverse bestanden afschermen.
De afscherming moet in php te regelen zijn.
Hiervoor heb ik nu de volgende setup.
Htaccess redirect alles naar index.php
In php check ik de sessie etc en stuur ik via readfile() met de juiste headers de file naar de client.
dus als ik www.mijndomein.nl/voorbeeld.gif opvraag geeft index.php mits je toegang hebt voorbeeld.gif terug. Als je geen toegang hebt krijg je een andere file. Bv een gif met de tekst geen toegang erin.
Afhankelijk van je sessie etc krijg je dus verschillend bestanden terug.
Helaas is deze methode van file lezen langzamer dan apache. Ook passthru etc halen het niet bij de snelheid die apache bied.
Daarom wil ik een andere methode gaan gebruiken.
Het volgende heb ik bedacht waarvan ik denk dat het te doen moet zijn maar zit een beetje vast.
Php zal het een en ander moeten checken en vervolgens de juiste url moeten doorgeven.
Daarom wil in de htaccess eerst een php scriptje laden. Via de volgende methode
Dit voor elke gif aanvraag wordt het script authtester.php aangeroepen.
Nu wil ik in authtester.php het volgende doen
Dit gaat goed php script wordt normaal geladen en de variable wordt gezet.
Probleem 1
Ik heb alleen nog geen idee of htaccess deze variabelen nu ook kan lezen. En wanneer deze variabelen weer kwijt zullen zijn...
Vervolgens wil ik redirecten aan de hand van de variable URL_LOCATION
Dus aan het htacces bestand voeg ik zoiets nog toe.
Dit geeft iedergeval een 500. Met in de log deze melding :
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary
Probleem 2
Gaat dit mis omdat de URL_LOCATION hier niet gezet is of is de syntax fout?
Is mijn bovenstaande idee uitvoerbaar?
De afscherming moet in php te regelen zijn.
Hiervoor heb ik nu de volgende setup.
Htaccess redirect alles naar index.php
code:
1
2
3
4
5
| RewriteEngine On RewriteCond %{REQUEST_URI} !^/index.php* [NC] RewriteRule (.*) /index.php |
In php check ik de sessie etc en stuur ik via readfile() met de juiste headers de file naar de client.
dus als ik www.mijndomein.nl/voorbeeld.gif opvraag geeft index.php mits je toegang hebt voorbeeld.gif terug. Als je geen toegang hebt krijg je een andere file. Bv een gif met de tekst geen toegang erin.
Afhankelijk van je sessie etc krijg je dus verschillend bestanden terug.
Helaas is deze methode van file lezen langzamer dan apache. Ook passthru etc halen het niet bij de snelheid die apache bied.
Daarom wil ik een andere methode gaan gebruiken.
Het volgende heb ik bedacht waarvan ik denk dat het te doen moet zijn maar zit een beetje vast.
Php zal het een en ander moeten checken en vervolgens de juiste url moeten doorgeven.
Daarom wil in de htaccess eerst een php scriptje laden. Via de volgende methode
code:
1
2
| AddHandler AuthTester .gif Action AuthTester /authtester.php |
Dit voor elke gif aanvraag wordt het script authtester.php aangeroepen.
Nu wil ik in authtester.php het volgende doen
PHP:
1
| putenv("URL_LOCATION=/images/voorbeeld.gif"); |
Dit gaat goed php script wordt normaal geladen en de variable wordt gezet.
Probleem 1
Ik heb alleen nog geen idee of htaccess deze variabelen nu ook kan lezen. En wanneer deze variabelen weer kwijt zullen zijn...
Vervolgens wil ik redirecten aan de hand van de variable URL_LOCATION
Dus aan het htacces bestand voeg ik zoiets nog toe.
code:
1
2
3
4
| RewriteEngine On RewriteCond %{REQUEST_URI} !^/index.php* [NC] RewriteRule (.*) %{ENV:URL_LOCATION} |
Dit geeft iedergeval een 500. Met in de log deze melding :
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary
Probleem 2
Gaat dit mis omdat de URL_LOCATION hier niet gezet is of is de syntax fout?
Is mijn bovenstaande idee uitvoerbaar?
- Ja, enig idee waar het mis gaat?
- Nee, een suggestie hoe ik apache bestanden kan laten afhandelen maar de volledige controle in php kan behouden? Ik heb nog zitten denken aan redirect via headers(location:xxx) en maar dan krijg ik steeds nieuwe requesten en belast ik het syteem juist meer. In 1 request moet dus de afhandling gedaan worden.