тут уже надо знать что именно проигрывателю нужно, заголовки послать. Вот пример для картинки Код (Text): <?php $sImage = 'imagename.jpg'; header("Content-Type: image/jpeg"); header("Content-Length: " .(string)(filesize($sImage)) ); echo file_get_contents($sImage);
Отсылаются 2 заголовка - тип и размер, а после них - выводится в поток содержимое. Узнай что нужно твоему плейеру - и пришли ему это)))
Вот код страницы attacment.php Код (Text): $sql = "SELECT path FROM mbase WHERE name=".$_GET["filename"]; if (!$sql) die(mysql_error()); $result = mysql_query($sql); $result = mysql_fetch_row($result); $path = $result[0]; $sVideo = $path; header('Content-Type: video/x-flv'); header('Content-Type: video/3gpp'); header('Content-Type: video/ogg'); header('Content-Type: video/avi'); header('Content-Type: video/x-msvideo'); header('Content-Type: video/mpeg'); header('Content-Type: video/x-ms-wmv'); header('Content-Type: video/mpg'); header('Content-Type: video/x-ms-asf'); header("Content-Length:".(string)(filesize($sVideo))); return $sVideo; Передаю этот аттачмент с filename=hashу файла из база И все равно не воспроизводит(( То есть вот таким образом: Код (Text): $sql="SELECT name FROM mbase WHERE iden=".$_GET["iden"]; if (!$sql) die(mysql_error()); $query = mysql_query($sql) or die(mysql_error()); $query = mysql_fetch_row($query); $path = $query[0]; <PARAM NAME="URL" VALUE="attachment.php&filename=<?echo $path;?>">
блин, ну зачем же ему все заголовки скопом???? Один нужен, для конкретного файла, который отправляешь. Вот честно скажу - мне лень разбираться с твоим плейером и искать что ему нужно посылать. Есть Гугл - и вперед. Удачи. Приведенный пример с картинками и путем в .htaccess работает 100%, у себя проверял.
да, еще на дорожку: отдавай скриптом спокойно и будь счастлив. Имя файла никого не ебет, можешь отдавать любой мусор действительный 10 минут. А при следующем запросе снова геренить его на основе айпи, агента и какойнить матери. Тогда уж точно если за 10 минут не скачают, то уже никогда не найдут по этому адресу файл. что правда не мешает человеку подсмотреть сам запрос на имя этого файла =)
Vangok хватит дебилизмом страдать. пойди погуляй 15 минут, покури, потом возьми бумажку, на нее напиши что как ты хочешь сделать, в какой последовательности и т.п. файл при заливке переименовывай в случайную последовательность символов, название и описание и это дело - в БД, туда же дописывай и его тип в миме. Потом при выдаче файла скриптом бери тип из бд, название вобще пох какое - я уже отписался по этому поводу, и отдавай файл на плеер. Счастье-счастье, радость-радость. миме кстати при заливке есть в массиве $_FILES, а если нету - можно отловить чемнить типа этого http://ru2.php.net/manual/en/function.m ... t-type.php
Собственно говоря попробовал вызвать страницу аттачмента И она вывела ошибку Unknown column '2921f158e885f9b18a89c7b50e4590fb' in 'where clause' Если делать просто по иду то выводит путь.
Поздравьте меня у меня получилось выудить хоть что-то из базы, но воспроизведение идет всего 9 секунд и собственно говоря нет картинки. Вот код: Код (Text): $index = $_GET["index"]; $sql = "SELECT path FROM spis_menu WHERE iden=".$index; if (!$sql) die(mysql_error()); $result = mysql_query($sql) or die(mysql_error()); $result = mysql_fetch_row($result) or die(mysql_error()); $path = $result[0]; $sVideo = $path; $mime = basename($sVideo); header('Content-Type: '+returnMIMEType($mime)); header("Content-Length:".(string)(filesize($sVideo))); echo file_get_contents($sVideo);
Советую никому и никогда не говорить адрес где этот скрипт стоит... (ибо его тут-же любой ламер приспособит под свои нужды, например как спам-сервер)
Vangok Слушай, ну сколько ж можно разжевывать.... В базе у тебя таблица attachments В ней поля iden, path, mime-type - это как минимум, можно еще название, можно filesize считать сразу при загрузке. Так даже лучше. делаешь запрос - $sql = "SELECT path, mime-type FROM attachments WHERE iden = " . $index; $result = mysql_query($sql) or die(mysql_error()); $video = mysql_fetch_assoc($result) or die(mysql_error()); Получаешь массив, в котором есть элементы $video['path'], $video['mime-type'] А дальше header('Content-Type: ' . $video['mime-type'])); header("Content-Length:".(string)(filesize( $video['path']))); echo file_get_contents($video['path']);
Вот написал код: Код (Text): $index = $_GET["index"]; $sql = "SELECT path,myme_type,size FROM spis_menu WHERE iden=".$index; if (!$sql) die(mysql_error()); $result = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($result) or die(mysql_error()); header('Content-Type: '.$row['myme_type']); header("Content-Length: ".$row['size']); echo file_get_contents($row['path']); Данный скрипт находится в отдельном файле attachment.php. Передаю в проигрыватель по такой ссылке Код (Text): index.php?page=attachment&index=0&filename=2921f158e885f9b18a89c7b50e4590fb Она воспроизводит ровно 9 секунд и то какую-то белеберду и картинки нету. Если я не прав в коде скажите в каком месте.
Варианты: 1) не туда передаешь. Еще раз проверь код для вставки плейера. Есть 2 места где указан src - в один надо передать путь до скрипта самого плейера, во второй - путь до файла, который воспроизводится. Как там правильно я хз - плейеры бывают разные. 2) проверить пути - может быть где-то пропущен слеш или точка. 3) реальный mime-type файла не соответствует тому заголовку который посылаешь
Спасибо за наводку насчет двух src действительно если в тег парам передавать сам файл а в тег embed путь до скрипта то возпоризводит все на ура. Все получилось.
Но все равно не защищенно получается как то. в одном месте значит поставили защиту на невидимость файла во втором открыли доступ. Если только ява скрипт какой нить допом написать и запретить пользователю сохранять страницу
Vangok я тебе предложил ссылки на 10 минут. способа скрыть проигрываемое во время проигрывания - не существует =)
Vangok Не забывай, чтобы файл можно было воспроизвести он должен быть доступен браузеру))) Если отлистаешь страницу - в самом начале я спрашивал - от чего хочешь защититься? Ответ был - вынести файл из public директории. Этого мы успешно добились.