Hallo,
habe bisher nichts dazu gefunden und hänge da schon seit Tagen dran fest :/
Also mein Problem:
Ich habe eine Internetseite auf der ich einige Videos laufen lasse. Damit unbefugte sie nicht einfach downloaden können, lass ich den download über eine download.php laufen.
Diese überprüft ob derjenige eingeloggt ist und gibt dann die Datei raus.
So der Videostream ansich geht auch, es wird alles korrekt angezeigt Sound ist auch da, das Problem ist: Die Internet-Seite hängt danach.
Wenn ich also mein Video starte (und dieses somit läd) kann ich auf keine andere Seite mehr gehen. (unendlich laden)
Leider hat alles was ich bisher versucht habe nichts geholfen
Dann hatte ich noch von php.net
Diese Code gefunden. Das Problem hier: Opera und Safari scheinen das HTTP/1.0 206 Partial Content zu benutzen, also eine HTTP_RANGE zu schicken, Firefox und IE leider nicht (Zumindest so wies mir vorkommt).
Mit diesem Code geht das verlinken zumindest bei Opera und Safari.
Weiß langsam nicht mehr weiter, googeln und Boardsuche haben mich leider auch nicht viel weiter gebracht.
Hoffe ihr habt da eine Idee.
habe bisher nichts dazu gefunden und hänge da schon seit Tagen dran fest :/
Also mein Problem:
Ich habe eine Internetseite auf der ich einige Videos laufen lasse. Damit unbefugte sie nicht einfach downloaden können, lass ich den download über eine download.php laufen.
Diese überprüft ob derjenige eingeloggt ist und gibt dann die Datei raus.
So der Videostream ansich geht auch, es wird alles korrekt angezeigt Sound ist auch da, das Problem ist: Die Internet-Seite hängt danach.
Wenn ich also mein Video starte (und dieses somit läd) kann ich auf keine andere Seite mehr gehen. (unendlich laden)
Leider hat alles was ich bisher versucht habe nichts geholfen
PHP-Code:
header("HTTP/1.1 200 OK");
header('Last-Modified: ' . date('r', $stat['mtime']));
header("Etag: \"".$etag."\"");
header("Content-Disposition: attachment; filename=\"".$filename[1]."\"");
header("Accept-Ranges: bytes");
header("Connection: Keep-Alive");
header("Keep-Alive: timeout=5, max=83");
header("Content-Type: ".mime_content_type($file));
readfile($file);
PHP-Code:
function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{
if(!file_exists($location))
{
header ("HTTP/1.0 404 Not Found");
return;
}
$size=filesize($location);
$time=date('r',filemtime($location));
$fm=@fopen($location,'rb');
if(!$fm)
{
header ("HTTP/1.0 505 Internal server error");
return;
}
$begin=0;
$end=$size;
if(isset($_SERVER['HTTP_RANGE']))
{
if(preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
{
$begin=intval($matches[0]);
if(!empty($matches[1]))
$end=intval($matches[1]);
}
}
if($begin>0||$end<$size)
header('HTTP/1.0 206 Partial Content');
else
header('HTTP/1.0 200 OK');
header("Content-Type: $mimeType");
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Accept-Ranges: bytes');
header('Content-Length:'.($end-$begin));
header("Content-Range: bytes $begin-$end/$size");
header("Content-Disposition: inline; filename=$filename");
header("Content-Transfer-Encoding: binary\n");
header("Last-Modified: $time");
header('Connection: close');
$cur=$begin;
fseek($fm,$begin,0);
while(!feof($fm)&&$cur<$end&&(connection_status()==0))
{ print fread($fm,min(1024*16,$end-$cur));
$cur+=1024*16;
}
}
Mit diesem Code geht das verlinken zumindest bei Opera und Safari.
Weiß langsam nicht mehr weiter, googeln und Boardsuche haben mich leider auch nicht viel weiter gebracht.
Hoffe ihr habt da eine Idee.
Kommentar