2009-07-24 7 views
1

У меня есть только часть участников на моем сайте, где пользователи могут входить в систему и просматривать потоковое содержимое Windows Media.Защита файла ASX в PHP

Я создал PHP-скрипт для работы с ASX-файлом, однако я не могу проверить его с помощью информации о сеансе. Я думаю, это связано с тем, что WMP делает запрос, а не php-страницу.

Может ли кто-нибудь предложить элегантный способ защиты файлов ASX?

ответ

0

Что бы я сделать, это включить PHP идентификатор сессии в .asx запрос. Обычно этот идентификатор хранится в файле cookie и передается PHP на каждом запросе страницы. В этом случае WMP не отправляет cookie, так что у вас нет способа узнать, аутентифицирован ли запрос или нет.

При выводе ссылки на скачивание файла ASX, липкость на идентификатор сессии в качестве переменной GET:

$download_link = "http://myserver.com/download_asx_file.php?" 
$download_link .= "f=$file_id&"; 
$download_link .= htmlspecialchars(SID); 

Теперь, когда вы звоните session_start() в верхней части download_asx_file.php он должен найти и правильно загрузить сеанс , и позволяют выполнять аутентификацию как обычно.

Примечание: Константа SID оценивается в PHPSESSID=12345678 (или любой сеанс этого пользователя случается)

0

Вы можете попробовать это:

//$user->isAuthenticated is only for ilustration, use whatever method you 
//use to check if the user is authenticated 
if($user->isAuthenticated()) { 
     $asx = file_get_contents("/path/to/my/file.asx"); 
     header("Content-type: video/x-ms-asf"); 
     echo $asx; 
} else { 
     //Tell the user that he can't view this asx 
}