PHP mag niet downloaden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

AstroVersum

AstroVersum

01/06/2007 21:46:00
Quote Anchor link
Ik heb een script op phphulp gedownload die ervoor zorgt dat je een bestand kan downloaden. Ik heb het script omgebouwd om flv-filmpjes mee te kunnen zien. Het bestand heb ik in mijn private_html gezet, want ik wil namelijk ervoor zorgen dat het niet te downloaden is. Het script zorgt ervoor dat er een filmpje wordt afgespeeld, alleen als je de url opent (pagina?bestand=movie1.flv), wordt ie gedownload. Het wordt wel afgespeeld, dat is het probleem niet.

Zouden jullie kunnen kijken hoe ik ervoor kan zorgen dat ie niet download?

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
    $dir
= '/usr/home/account/domains/mijnsite.nl/private_html/movies/'; //geef een map aan met eindslash (. voor deze map)
  
    if(isset($_GET['bestand'])) //als ?bestand= bestaat
    {
        if(eregi('../', $_GET['bestand']) == FALSE) //als er geen ../ in de bestandsnaam voorkomt, dus geen upmap wordt aangevraagd
        {
            if(file_exists($dir.$_GET['bestand'])) //en ?bestand=.. is ook nog eens een bestaand bestand is
            {
                   header('Content-type: video/x-flv'); //zet de header dat het bestand gedownload moet worden
                                                                  //en dat het dus niet in de browser afgespeeld kan worden

 
                header('Content-Disposition: inline; filename='.$_GET['bestand']); //geef aan welk bestand gedownload moet worden
                readfile($dir.$_GET['bestand']); //en open vervolgens dat bestand
            }
            else //als het bestand niet bestaat
            {
                echo 'Bestand bestaat niet'; //echo dat
            }
        }

        else //als er wel ../ in de bestandsnaam voorkomt
        {
            echo 'Deze map is niet toegankelijk'; //echo dat dat niet mag
        }
    }

    else //als ?bestand= niet is opgegeven
    {
        echo 'Geen bestand opgegeven'; //echo dat
    }
?>
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
 
PHP hulp

PHP hulp

05/05/2024 06:35:09
 
Terence Hersbach

Terence Hersbach

02/06/2007 00:06:00
Quote Anchor link
afspelen == downloaden, dus zal moeilijk gaan..
 
AstroVersum

AstroVersum

02/06/2007 09:14:00
Quote Anchor link
Hmm jammer, is er ook geen manier zodat je die url niet direct mag aanvragen?
Of heeft iemand anders een idee hoe ik dit kan doen?
 
Thomas

Thomas

02/06/2007 09:16:00
Quote Anchor link
Terence bedoeld, als jij een filmpje kijkt op youtube, googe video of elders, slaat het filmpje zich zowieso op. Je kan het wel verwijderen "tijdelijke bestanden verwijderen"
 
AstroVersum

AstroVersum

02/06/2007 09:30:00
Quote Anchor link
Voor dat tijdelijk opslaan hebben we toch no-cach bij php?

Maar als je die url aanvraagt, krijg je popup om te downloaden. Dit wil ik niet. Hoe kan ik dit voorkomen?
 
Jelmer -

Jelmer -

02/06/2007 11:49:00
Quote Anchor link
De content-disposition header eruit halen zou denk ik wel helpen.

Ow, en no-cache betekent niets meer dan dat hij het niet lang opslaat. Hij slaat het uiteraard wel even ergens op, anders kan het programma dat het moet afspelen (de plugin over het algemeen) het niet uitlezen.

.. tenzij je natuurlijk een stream hebt. Maar dan begint het ingewikkeld te worden.
 
AstroVersum

AstroVersum

02/06/2007 12:10:00
Quote Anchor link
Ik heb zo'n script als youtube. De content-disposition header eruit halen werkt helaas niet.
 
Willem Jan Z

Willem Jan Z

02/06/2007 12:43:00
Quote Anchor link
Je hebt een download script, maar wil dat het niet download :S
Hoe logisch...

Ik gok dat je bedoelt: Dat hij alleen de flv bestanden niet download. Vrij simpel, gewoon controleren of het geen flv bestand is.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    if(substr($_GET['bestand'],-3) == 'flv') {
       echo 'Stout! Mag je niet download';
    }
else {
       if(eregi() etc
       [..]
    }

?>
 
AstroVersum

AstroVersum

03/06/2007 16:18:00
Quote Anchor link
Nee willenjanzijderveld. op jouw manier kan ik niet meer streamen. Ik heb een nieuw stukje script gemaakt, maar werkt niet. Zouden jullie erna kunnen kijken?

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
<?php
header("My-Stream 200 OK");
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Connection: close");

$file = stripslashes($_GET['bestand']);
if (strstr($file, ".") && eregi("^([a-z0-9/_-])+\.[a-z3]{3}$", $file) && strstr($file, "..") === false && strstr($file, "./") === false) {
  $file = "/usr/home/account/domains/mijnsite.nl/private_html/movies/" . $file;
  $ext = array_reverse(explode(".", $file));
  $naam = array_reverse(explode("/", $file));
  if (!file_exists($file) || strtolower($ext[0]) != "")
  if ($fo1 = fopen($file, "rb")) {
    header("Content-type: video/x-flv");
    header("Content-Disposition: filename= " . $naam[0]);
    header("Content-Length: " . filesize($file));
    while (!feof($fo1)) {
        $out = fread($fo1, 1024 * 6);
        print $out;
    }

    fclose($fo1);
  }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
 
Hipska BE

Hipska BE

03/06/2007 19:42:00
Quote Anchor link
ik heb ernaar gekeken ;-)
 
- -

- -

03/06/2007 20:01:00
Quote Anchor link
Ik ook :D

Verder is regel 3 erg dom. PHP doet dat zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    header('Expires: ' . date('r'));
?>
Gewijzigd op 01/01/1970 01:00:00 door - -
 
AstroVersum

AstroVersum

03/06/2007 21:15:00
Quote Anchor link
-_- heel erg bedankt, maar dat bedoelde ik niet. Zouden jullie mss kijken waarom het script niet werkt?

die regel 3 verbeter ik wel :)
 
Martijn Wieringa

Martijn Wieringa

04/06/2007 08:54:00
Quote Anchor link
Het niet cachen van bestanden e.d. is slechts een 'suggestie' voor de browser, die deze al dan niet honoreerd.

Alles wat mensen mogen zien/horen, kunnen ze kopieren (alleen kost het een iets meer tijd dan het andere).
 
- -

- -

04/06/2007 10:48:00
Quote Anchor link
Laat dan een voorbeeld zien, mijn glazen bol is weer eens gevallen.
 
AstroVersum

AstroVersum

04/06/2007 21:13:00
Quote Anchor link
@Pholeron, ik wil juist dat ze niet zo gemakkelijk kunnen downloaden. Ik weet dat je kopieren niet kunt tegengaan.

@Jonathan, het script werkt niet, dus je ziet een witte pagina. Daarom vraag ik jullie hulp
 
AstroVersum

AstroVersum

08/06/2007 21:08:00
Quote Anchor link
Nieuw scriptje gemaakt:

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
<?php
header('Expires: ' . date('r'));
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

if (eregi("^([a-z0-9/_-])+\.flv$", $_GET['bestand']))
{

  $file = "/usr/home/account/domains/mijnsite.nl/private_html/movies/" . $_GET['bestand'];
  if (file_exists($file))
  {

    if ($fo1 = fopen($file, "rb"))
    {

      header("Content-type: video/x-flv");
      header("Content-Disposition: filename= " . $_GET['bestand']);
      header("Content-Length: " . filesize($file));
      while (!feof($fo1))
      {

        $out = fread($fo1, 1024 * 6);
        print $out;
      }

      fclose($fo1);
    }
  }
}

?>


Dit probleem wil ik niet (hetzelfde als de rest van het verhaal): http://img77.imageshack.us/img77/62/naamloosre6.jpg

Hoe kan ik dit voorkomen in firefox? Of is er een manier om pagina's te blokkeren voor firefox (onvriendelijke manier)?
 
- SanThe -

- SanThe -

08/06/2007 21:31:00
Quote Anchor link
Ik hoop eigenlijk dat je dat niet kan voorkomen. Dat is nog een klein stukje bescherming voor de client-pc.
 
AstroVersum

AstroVersum

10/06/2007 09:40:00
Quote Anchor link
Wat bedoel je met de bescherming voor de client-pc?
 



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.