PHP mag niet downloaden
Zouden jullie kunnen kijken hoe ik ervoor kan zorgen dat ie niet download?
Code (php)
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
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
}
?>
$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
afspelen == downloaden, dus zal moeilijk gaan..
Of heeft iemand anders een idee hoe ik dit kan doen?
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"
Maar als je die url aanvraagt, krijg je popup om te downloaden. Dit wil ik niet. Hoe kan ik dit voorkomen?
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.
Ik heb zo'n script als youtube. De content-disposition header eruit halen werkt helaas niet.
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)
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
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);
}
}
?>
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
ik heb ernaar gekeken ;-)
die regel 3 verbeter ik wel :)
Alles wat mensen mogen zien/horen, kunnen ze kopieren (alleen kost het een iets meer tijd dan het andere).
Laat dan een voorbeeld zien, mijn glazen bol is weer eens gevallen.
@Jonathan, het script werkt niet, dus je ziet een witte pagina. Daarom vraag ik jullie hulp
Code (php)
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
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);
}
}
}
?>
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)?
Ik hoop eigenlijk dat je dat niet kan voorkomen. Dat is nog een klein stukje bescherming voor de client-pc.
Wat bedoel je met de bescherming voor de client-pc?