Защита ASX-файла в PHP
У меня на сайте есть раздел только для членов, где пользователи могут войти и просматривать потоковое содержимое Windows Media.
Я создал скрипт PHP для обслуживания файла ASX, но не могу проверить это с помощью информации о сеансе. Я думаю, это потому, что WMP делает запрос, а не php-страницу.
Кто-нибудь может предложить элегантный способ защиты файлов ASX?
2 ответа
Я хотел бы включить идентификатор сеанса PHP в запрос.asx. Обычно этот идентификатор хранится в куки и передается в 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
(или независимо от того, что происходит сессия этого пользователя)
Вы можете попробовать это:
//$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
}