Afschermen geuploade documenten in een CMS-website

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Simon Jansen

Simon Jansen

22/07/2010 10:43:20
Quote Anchor link
Hallo,

Ik heb een CMS-website gebouwd waarbij de gebruikers de inhoud van de pagina's kunnen bewerken maar ook documenten (pdf's e.d.) kunnen uploaden. Voor het bewerken van de paginainhoud maak ik gebruik van CKeditor, voor het documentbeheer maak ik gebruik van CKfinder.

Om van de website gebruik te kunnen maken dienen gebruikers in te loggen. De geuploade documenten komen in submappen terecht. (Ingesteld via CKfinder).

Hoe kan ik het zo inrichten dat documenten alleen via de applicatie benaderd kunnen worden en niet via een internetbrowser als je de url weet tenminste?

Ik weet dat ik internetmappen kan beveiligen met een gebruikersnaam/wachtwoord via .htaccess. Maar als ik de documenten in een internetmap benader via de website is het niet gebruikersvriendelijk dat dan eerst nog een gebruikersnaam of wachtwoord ingevoerd moet worden. Kan ik met php programmeren tegen .htaccess o.i.d.?

Is het mogelijk om een soort van wrapper te bouwen, een php-programma dat automatisch opstart als een document in internetmap wordt benaderd en dat dan kijkt of de gebruiker de gewenste sessie instellingen heeft, zo ja dan kan het document worden getoond, zo nee dan volgt een foutmelding.

Wie heeft ervaring met dit soort zaken en tips voor mij?

gr. Simson
 
PHP hulp

PHP hulp

04/12/2024 09:32:29
 
P Lekensteyn

P Lekensteyn

22/07/2010 11:51:17
Quote Anchor link
Het beste is om zulke bestanden buiten de webroot te plaatsen (buiten public_html, htdocs, etc).
Bestanden vraag je nog aan via /uploads/.
Zo ziet de structuur er dan uit:
/www/htdocs/uploads/ -> http://example.com/uploads/
/www/uploaded/ -> niet van buiten bereikbaar.
/www/htdocs/file.php -> http://example.com/file.php, maar wordt niet direct aangeroepen
In /www/htdocs plaats je een .htaccess bestand:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine On
RewriteRule ^uploads/(.+)$ file.php?$1

file.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$uploadMap
= '/www/uploaded/';
$filename = get_absolute_path($_SERVER['QUERY_STRING']);
$file = $uploadMap . $filename;
// even geleend van de PHP Manual :p
function get_absolute_path($path) {
    $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    $absolutes = array();
    foreach ($parts as $part) {
        if ('.' == $part) continue;
        if ('..' == $part) {
            array_pop($absolutes);
        }
else {
            $absolutes[] = $part;
        }
    }

    return implode(DIRECTORY_SEPARATOR, $absolutes);
}

if(!file_exists($file)){// bestand niet gevonden
    header('HTTP/1.1 404 Not Found');
    exit;
}

// lees maar in
// Eventueel Content-Type sturen?

readfile($file);
?>
 



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.