Как запретить доступ по ссылке ?

12
G2
На сайте с 12.01.2013
Offline
36
3964

Помогите пожалуйста, как можно реализовать такую задачу, есть например страница view_video.php, в странице у меня вставлен код vlc плеера, вот код:

<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" height="350" width="600">

<param name="filename" value="">

<param name="ShowStatusBar" value="True">

<embed src="video_direct/file/video.m3u" showstatusbar="1" type="video/x-ms-asf" height="380" width="500"></object>

по ссылке video_direct/file/video.m3u берется видео.

Мне нужно сделать так, чтоб если пользозователь просто заходит на страницу view_video.php то ему соответственно показывало видео, но если он в адресной строке обратится к файлу video.m3u, вот так:

mysite.ru/video_direct/file/video.m3u

то чтоб для него был закрит доступ к этому файлу, или чтоб его перекидало на главную страницу сайта. Как такое можно реализовать ?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1
Подпись))
G2
На сайте с 12.01.2013
Offline
36
#2

в гугле нашел что нужно в .htaccess прописать такое:

RewriteEngine on

RewriteRule .*.(m3u)$ http://mysite.ru/index.php [nc]

но не знаю то ли это ?

---------- Добавлено 28.01.2013 в 21:35 ----------

нет не то, если так сделать то видео не проигрывается, хотя при обращении к файлу mysite.ru/video_direct/file/video.m3u перекидывает на главную страницу, но мне такое не подходит, есть ли еще какие то способы сделать так чтоб видео проигрывалось но небыло доступа к файлу video.m3u через адресную строку ?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

Давайте я за Вас погуглю:)

этот сайт на 2 месте в предыдущем запросе
PS. не можете сделать сами - закажите, люди ведь тоже хотят кушать о_О

G2
На сайте с 12.01.2013
Offline
36
#4

СПАСИБО, а если в моем случае то этот скрипт мне писать в файле view_video.php ?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#5

Скрипт пишется в файле index.php на который идет "переадресация" всех запросов файлов. Файл index.php должен лежать в директории, где у Вас располагаются файлы, которые Вы хотите защищать.

Кратко принцип работы антилича:

У Вас на сайте делается вставка, ну пускай картинки

<img src="www.site.ru/content/images/bg.jpg">

Браузер когда напрашивает эту картинку он посылает HTTP-заголовок REFERER.

Файл index.php должен лежать в папке images.

Этот индекс.пхп смотрит: реферер наш сайт - отдаем контент, реферера нет или он другой - давай до свидания:)

PS. там скрипт не совсем рабочий, кое-что надо переделывать(очень мелочи), но суть передана правильно(во всяком случае я понял с 1 раза:)).

G2
На сайте с 12.01.2013
Offline
36
#6

сделал так:

$file = pathinfo($_SERVER['REQUEST_URI']);

$filename = $file['video.m3u']; //Смотрим, какой файл запросили

// лимит времени выполнения

set_time_limit(0);

$self = pathinfo($_SERVER['PHP_SELF']);

$self = $self['file']; //Смотрим из какой папки вызван скрипт.

if(!is_file($_SERVER['DOCUMENT_ROOT']."$self/".$filename)){

echo "Файл не найден";

return;

}

// А теперь главное. Запоминаем откуда, к нам пришел посетитель

$refer = $_SERVER['HTTP_REFERER'];

if(!strstr($refer,$_SERVER['SERVER_NAME'])){ // Если не с нашего района, то ...

echo "<html><head><META http-equiv=Content-Type content=\"text/html; charset=windows-1251\"></head><body>";

echo "<center><h1>ЙУХ тебе а не файл...</h1></center>";

echo "</body></html>";

return;

}

$f = fopen($filename, 'rb'); // Открываем файл и отдаем клиенту.

if (isset($_SERVER['HTTP_RANGE'])) { // поддерживается ли докачка

$range = $_SERVER['HTTP_RANGE'];

$range = str_replace('bytes=', '', $range);

$range = str_replace('-', '', $range);

if ($range) fseek($f, $range);

}

// если есть смещение

if ($range) {

header($_SERVER['SERVER_PROTOCOL'].' 206 Partial Content');

} else {

header($_SERVER['SERVER_PROTOCOL'].' 200 OK');

}

header( 'Last-Modified: '.date('D, d M Y H:i:s T', filemtime($filename)) );

header('Content-Length: '.($filesize-$range));

header('Accept-Ranges: bytes');

header('Content-Range: bytes '.$range.'-'.($filesize - 1).'/'.$filesize);

header('Content-Type: application');

header('Content-Disposition: attachment; filename="'.$filename.'"');

ini_set('output_buffering', 0);

ini_set('zlib.output_compression', 0);

while( !feof($f) ) {

ob_start();

echo fread($f, $speed);

ob_flush();

ob_end_flush();

sleep(1); // засыпаем

}

// закрываем файл

fclose($f);

доступа к файлу нет но видео так и не проигрывает. Что я не так делаю ?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#7
gigs2:
доступа к файлу нет но видео так и не проигрывает. Что я не так делаю ?

1)Занимаетесь копипастом

2)Не думаете

:)

G2
На сайте с 12.01.2013
Offline
36
#8

неуказал размер файла или что то другое ?

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Милованов Ю.С:
Гуглите антилич

Вижу, тебя зацепило :) как минимум 2-й раз за последний день мой совет тебе переадресуешь другим :) (не-не, я ж не претендую, не против.. это так, прикольно просто)
А, да, после меня там еще хххх1987-й сказал второе слово для гугления. Оно мб даже больше полезной инфы выдаст.


Палю тему - если перед апачем стоит фронтэнд (тот же нгикс), то он вполне может наплевать на большинство антилич-защит нарисованных в паблике. А как ты показал выше - вообще обходится элементарной подменой рефферера ;) Так что тебе есть ещё куда копать (тебе ж это интересно, как я погляжу).
ЗЫ. Если чё - тут я теоретик, в свое время побывавший среди спецов "в теме";)

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
G2
На сайте с 12.01.2013
Offline
36
#10
Милованов Ю.С:
1)Занимаетесь копипастом
2)Не думаете
:)

помогите разобратся в том скрипте, а то я php только начинаю учить и пока кроме как создавать базы и доставать от туда данные ничего больше не знаю, пока что, прошу вашей помощи, без вас сам не разберусь.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий