Ilekor
Профессор
- Регистрация
- 8 Май 2009
- Сообщения
- 147
- Реакции
- 35
- Автор темы
- #1
Народ, нужна ваша помощь. Пишу скрипт для защиты прямых ссылок на видео, что бы не тырили видео файлы на свои сайты.
Так вот собственно вопрос, правильно ли написан скрипт, потому что загрузка во флеш плеер идет, но может оборватся например на пол фильма и при нажатии на плей фильм начинается заново. Прошу подкорректировать что не так в скрипте.
сначала я проверяю, наш ли это пользователь смотрит или с другого сайта и если файл существует тогда отдаем пользователю фильм, а иначе отдаем рекламный ролик. Проверки я не выкладывал так как не это важно. А важна сама отдача ролика в плеер.
Так вот собственно вопрос, правильно ли написан скрипт, потому что загрузка во флеш плеер идет, но может оборватся например на пол фильма и при нажатии на плей фильм начинается заново. Прошу подкорректировать что не так в скрипте.
сначала я проверяю, наш ли это пользователь смотрит или с другого сайта и если файл существует тогда отдаем пользователю фильм, а иначе отдаем рекламный ролик. Проверки я не выкладывал так как не это важно. А важна сама отдача ролика в плеер.
PHP:
$file = "papka_video/".$flv;
$file_real = $file;
$extension = strtolower(substr(strrchr($file, "."), 1));
switch($extension){
case "flv": $type = "flv-application/octet-stream"; break;
case "mp4": $type = "video/mp4"; break;
default: $type = "application/force-download"; break;
}
// Fix IE bug [0]
$header_file = (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) ? preg_replace('/\./', '%2e', $file, substr_count($file, '.') - 1) : $file;
// Prepare headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public", false);
header("Content-Description: File Transfer");
header("Content-Type: " . $type);
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"video.flv\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file_real));
// Send file for download
if ($stream = fopen($file_real, 'rb')){
while(!feof($stream) && connection_status() == 0){
//reset time limit for big files
set_time_limit(0);
print(fread($stream,1024*8));
flush();
}
fclose($stream);
}