Script voor eenmalige download

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- -

- -

25/07/2006 18:48:00
Quote Anchor link
1 moment
 
PHP hulp

PHP hulp

04/05/2024 22:40:54
 
Joshua Smith

Joshua Smith

25/07/2006 18:52:00
Quote Anchor link
ok
 
- -

- -

25/07/2006 18:59:00
Quote Anchor link
ik heb hier versie 2.0. De dir waar het downloadbare bestandje instaat MOET CHMOD 777 HEBBEN, anders werkt de unlink functie niet...
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
28
29
30
31
32
33
34
35
36
37
<?php
##################
###CONFIGURATIE###
##################


$type['zip'] = 'application/zip';


############
###SCRIPT###
############


if (isset($_GET['bestandsnaam']) AND is_file(@$_GET['bestandsnaam'])){
    $bestandsnaam = $_GET['bestandsnaam'];
    if (isset($_GET['actie']) AND (@$_GET['actie']=='downloaden' OR @$_GET['actie']=='verwijderen')){
    $actie = $_GET['actie'];
        if ($actie=='downloaden'){
            $padinfo = pathinfo($bestandsnaam);
            $extensie = $padinfo['extension'];
            $type = $type[$extensie];
            header('Content-type: ' . $type);
            header('Content-Disposition: attachment; filename=' . $bestandsnaam);
            readfile($bestandsnaam);
            header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?bestandsnaam=' . $bestandsnaam . '&actie=verwijderen');
        }

        elseif ($actie=='verwijderen'){
            unlink($bestandsnaam);
        }
    }

    else{
        echo 'De actie klopt niet.';
    }
}

else{
    echo 'De bestandsnaam klopt niet.';
}

?>
 
- -

- -

25/07/2006 19:06:00
Quote Anchor link
ow shit, er szit een enorm beveiligingslek in: je kan PHP bestanden jatten 9met wachtwoorden oed), maar hier is versie 2.1 met een beveiliging dat alleen de extensies die in de array $type vastgelegd zijn, gedownload mogen worden. Bij mij doettie het!!!

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
##################
###CONFIGURATIE###
##################


$type['zip'] = 'application/zip';


############
###SCRIPT###
############


if (isset($_GET['bestandsnaam']) AND is_file(@$_GET['bestandsnaam'])){
    $bestandsnaam = $_GET['bestandsnaam'];
    $padinfo = pathinfo($bestandsnaam);
    $extensie = $padinfo['extension'];
    if (isset($type[$extensie])){
        if (isset($_GET['actie']) AND (@$_GET['actie']=='downloaden' OR @$_GET['actie']=='verwijderen')){
            $actie = $_GET['actie'];
            if ($actie=='downloaden'){
                $type = $type[$extensie];
                header('Content-type: ' . $type);
                header('Content-Disposition: attachment; filename=' . $bestandsnaam);
                readfile($bestandsnaam);
                header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?bestandsnaam=' . $bestandsnaam . '&actie=verwijderen');
            }

            elseif ($actie=='verwijderen'){
                unlink($bestandsnaam);
            }
        }

        else{
            echo 'De actie klopt niet.';
        }
        }

    else{
        echo 'De extensie klopt niet.';
    }
}

else{
    echo 'De bestandsnaam klopt niet.';
}

?>
 
Joshua Smith

Joshua Smith

25/07/2006 19:06:00
Quote Anchor link
Nog steeds diezelfde error! ik snap er niets gaan, ik heb ze geupload via eigen php-script (http://www.burostockholm.nl/upload/uploadserver.php), de juiste mappen zijn naar 777 geCHMOD etc. ik weet niet wat er niet goed gaat!
 
- -

- -

25/07/2006 19:08:00
Quote Anchor link
Het ligt aan jouw server: check dit: http://jonathanhogervorst.com/download.php?bestandsnaam=download.zip&actie=downloaden

trouwens nu moet je het bestand zo aanroepen:
bestandsnaam.php?bestandsnaam=zipje&actie=downloaden
 
Joshua Smith

Joshua Smith

25/07/2006 19:12:00
Quote Anchor link
ok, neem ik even een andere server! In ieder geval bedankt! Ik probeer het hier verder;-)
Gewijzigd op 01/01/1970 01:00:00 door Joshua Smith
 
Joshua Smith

Joshua Smith

25/07/2006 19:38:00
Quote Anchor link
Nu geeft-ie bij mij aan dat de bestandsnaam niet klopt:

http://www.subroutine.nl/test/download.php?bestandsnaam=download.zip&actie=downloaden
 
Joshua Smith

Joshua Smith

25/07/2006 20:00:00
Quote Anchor link
OK, nu download-ie het bestand wel, maar delete 'm niet!
Gewijzigd op 01/01/1970 01:00:00 door Joshua Smith
 
Joshua Smith

Joshua Smith

25/07/2006 20:19:00
Quote Anchor link
Ik weet inmiddels waar het aan ligt: Ik kan mijn bestanden niet CHMODDEN als ik ze via mijn php-uploadscript heb geupload (wat noodzakelijk is)

Heeft iemand hier dan een oplossing voor???
@ Jonathan: wat gebruik jij?
Gewijzigd op 01/01/1970 01:00:00 door Joshua Smith
 
- -

- -

26/07/2006 09:25:00
Quote Anchor link
Je moet de hele uploaddirectory chmodden naar 777. Dus niet losse bestanden!!!
 
Jan Koehoorn

Jan Koehoorn

26/07/2006 09:29:00
Quote Anchor link
Joshua:
Ik weet inmiddels waar het aan ligt: Ik kan mijn bestanden niet CHMODDEN als ik ze via mijn php-uploadscript heb geupload (wat noodzakelijk is)

Heeft iemand hier dan een oplossing voor???
@ Jonathan: wat gebruik jij?

Als je ze via een script uploadt, kun je ze ook via je script chmodden. Na het uploaden doe je gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    chmod ('bestand.ext', 0666);
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Joshua Smith

Joshua Smith

26/07/2006 14:53:00
Quote Anchor link
@ Jonathan: Het lag dus toch aan het script! Je stuurt een bestand en daarna wil je nog een redirect header sturen. Dat kan niet. Ten eerste hoort de data van het bestand NA de headers te komen. Ten tweede kun je niet tegelijk een bestand sturen en redirecten. De browser ziet de redirect en volgt die onmiddelijk op, hij wacht niet eens tot het bestand ontvangen is, hij floept weg zodra de Location header is ontvangen. Dus die header('Location' moet eruit.

Maar nu draai je de unlink ook pas als de bezoeker op de volgende pagina komt waar je vroeger met de redirect naartoe zou gaan. Dat werkt niet. Na de readfile moet dus meteen een unlink komen (na het versturen heb je het immers niet meer nodig). Het script ziet er dan als volgt uit:

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
28
29
30
<?php

$type
['zip'] = 'application/zip';

if (isset($_GET['bestandsnaam']) AND is_file(@$_GET['bestandsnaam'])){
    $bestandsnaam = $_GET['bestandsnaam'];
    $padinfo = pathinfo($bestandsnaam);
    $extensie = $padinfo['extension'];
    if (isset($type[$extensie])){
        if (isset($_GET['actie']) AND (@$_GET['actie']=='downloaden' OR @$_GET['actie']=='verwijderen')){
            $actie = $_GET['actie'];
                $type = $type[$extensie];
                header('Content-type: ' . $type);
                header('Content-Disposition: attachment; filename=' . $bestandsnaam);
                readfile($bestandsnaam);
                unlink($bestandsnaam);
            
        }

        else{
            echo 'De actie klopt niet.';
        }
        }

    else{
        echo 'De extensie klopt niet.';
    }
}

else{
    echo 'De bestandsnaam klopt niet.';
}

?>


Dit werkt bij mij wel, ongeacht of ik m'n bestanden nou CHMOD! Vallen er nog andere verbeteringen aan te maken?
Gewijzigd op 01/01/1970 01:00:00 door Joshua Smith
 

Pagina: « vorige 1 2



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.