私のサイトには、ユーザーがログインして Windows Media ストリーミング コンテンツを表示できるメンバー専用エリアがあります。
ASX ファイルを提供する PHP スクリプトを作成しましたが、これをセッション情報で検証できません。これは、PHPページではなくWMPがリクエストを行っているためだと思います。
ASX ファイルを保護するエレガントな方法を提案できる人はいますか?
これを試すことができます:
//$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
}
私なら、PHP セッション ID を .asx 要求に組み込みます。通常、この識別子は Cookie に保存され、ページ要求ごとに PHP に渡されます。この場合、WMP は Cookie を送信していないため、リクエストが認証されているかどうかを知る方法がありません。
ASX ファイルのダウンロード リンクを出力するときは、セッション ID を 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
(またはそのユーザーのセッションがたまたま何であれ)に評価されます