Avatar billede eikhorsholm Nybegynder
15. september 2008 - 12:20 Der er 6 kommentarer og
1 løsning

Download-fil, kun hvis session er sat.

Er det muligt, at have en fil på sin server som har et eller andet chmod så man ikke kan se den, men via et php-script som tjekker som $_SESSION['login'] er sat kan downloade filen?
Avatar billede j4k0b Nybegynder
15. september 2008 - 12:44 #1
Well, du kan lave en PHP-fil som tjekker din session, og linke til PHP-filen i stedet for den originale fil.

Eksempel:

<?php
    session_start();

    if(!$_SESSION['login']) {
        header('HTTP/1.0 403 Forbidden');
        die('Adgang nægtet');
    }

    $path = 'minfil.pdf';
    $name = 'navn_brugeren_set.pdf';

    header('Cache-control: no-cache');
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; filename='.$name);
    header("Content-Type: application/pdf");
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. filesize($path));

    readfile($path);
?>


Se mere i kommentarerne på http://dk.php.net/header
Avatar billede eikhorsholm Nybegynder
15. september 2008 - 12:51 #2
Det ser ud som det jeg søger :-)
Hvad skal jeg chmod'e min org. fil til?

Og hvis du laver et svar, så kan jeg lukke spm'et :-)

TAK!
Avatar billede j4k0b Nybegynder
15. september 2008 - 13:25 #3
Hvis du chmod'er din fil, så den ikke kan læses, kan den heller ikke læses af dit PHP program. Hvis du har adgang til at bruge htaccess på din webserver, eller har adgang til .conf-filen for dit website, så læg filen ind i en undermappe (herunder kaldt "private") og tilføj følgende til htaccess/konfigurationen:

<Location /private>
    order deny,allow
    deny from all
</Location>

Dermed fjerners du muligheden for at tilgå filen (og alle andre filer i /private) gennem webserveren. Programmet kan stadig læse filen.
Avatar billede eikhorsholm Nybegynder
15. september 2008 - 13:32 #4
Jeg bruger allerede .htaccess med en række omskrivningsregler, men hvis jeg skriver <Location... enten i toppen eller bunden så fejler min side generelt.
Avatar billede eikhorsholm Nybegynder
15. september 2008 - 13:40 #5
Den ser således ud nu, men fejler altså:

Options +FollowSymLinks
RewriteEngine On

<Location /private>
    Order Deny,Allow
    Deny from all
</Location>

RewriteRule ^download/([a-z.]+)/?$ download.php?file=$1 [L]
RewriteRule ^([a-z]+)/?$ index.php?page=$1 [L]
Avatar billede j4k0b Nybegynder
15. september 2008 - 14:06 #6
Ok - jeg er ikke sikker på at htaccess overhovedet må indeholde en Location-blok, måske er det problemet. En anden løsning kunne være at lægge filen udenfor din htdocs-mappe, hvis du har adgang til det.

Eller du kan omskrive alle URLs til mappen til din forside eller lign.

Noget alá:
RewriteRule ^private/(.*)?$ index.php [L]
Avatar billede pidgeot Nybegynder
15. september 2008 - 15:32 #7
...man kan normalt bare placere sådan en .htaccess i den mappe der skal beskyttes, og så får alle der prøver at tilgå direkte smidt en 403 i ansigtet.

I øvrigt kan man nøjes med linjen Order Allow,Deny - Deny from all er implicit med den rækkefølge (den sidstnævnte fungerer som "standardregel" hvis intet andet er angivet).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester