Binnen mijn CMS wil ik gebruikers de mogelijkheid geven documenten te uploaden en aan te geven voor welke gebruikersgroepen dit document te downloaden is. Op het moment dat een gebruiker naar de URL van het document surft, wil ik eerst zijn toegangsrechten checken alvorens ik hem het document wel of niet laat downloaden.
Na wat lezen in de Google Newsgroups en op php.net, heb ik geleerd dat in een dergerlijk geval de documenten buiten de webroot worden opgeslagen. Als er een request is, worden eerst de rechten gechecked en als die goed zijn, wordt het document met fpassthru naar de client gestuurd, zoiets als:
Mijn vraag is of het ook mogelijk is, bijvoorbeeld met .htaccess, om de documenten onder de webroot te bewaren, en toch toegang via een url te vermijden. Dus als dit: site.com/files/word/example.doc een bestaande dir is, is het dan mogelijk om ook eerst de rechten te checken en afhankelijk daarvan de toegang tot het document te verlenen danwel te ontzeggen?
Na wat lezen in de Google Newsgroups en op php.net, heb ik geleerd dat in een dergerlijk geval de documenten buiten de webroot worden opgeslagen. Als er een request is, worden eerst de rechten gechecked en als die goed zijn, wordt het document met fpassthru naar de client gestuurd, zoiets als:
PHP:
1
2
3
4
5
6
| $completeFilePath = $fileDir . '/' . $fileName; header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); header("Content-type: application/octet-stream\nContent-Disposition: inline; filename=\"".$fileName."\"\nContent-length: ".(string)(filesize($completeFilePath))); $fd=fopen($completeFilePath, 'r'); fpassthru($fd); |
Mijn vraag is of het ook mogelijk is, bijvoorbeeld met .htaccess, om de documenten onder de webroot te bewaren, en toch toegang via een url te vermijden. Dus als dit: site.com/files/word/example.doc een bestaande dir is, is het dan mogelijk om ook eerst de rechten te checken en afhankelijk daarvan de toegang tot het document te verlenen danwel te ontzeggen?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."