[PHP-users 14494]Macintoshにおけるreadfileによるwmv処理。

hideki ushijima hide @ bierce-web.net
2003年 4月 8日 (火) 03:21:36 JST


初めて投稿させていただきます。
SOHOで活動しております牛嶋と申します。

早速お聞きしたいのですが、現在、作業しております案件で
Macintosh (OS 9 系) のみでおこっている現象です。

BASIC 認証を使わない会員制のサイトで
http://www.aaa.com/member/
以下のディレクトリにアクセスする際、apache で

RewriteEngine on
RewriteRule ^/member/([/_\.0-9a-z]+)$ /check.php?$1 [PT]

でリライトし、check.php にて
ログイン時に持たせたセッション情報をちゃんと保持しているかどうかのチェックを行います。

<?php
session_start();

// メンバーディレクトリの絶対パス
$filepath = "/home/aaa/www/member/";

// セッションチェック
if(isset($_SESSION['member']['id'])){
	next;
}else{
	// 認証不可
	print 'Not Login.';
	exit;
}

// リクエストファイルのセット
$filepath = $filepath . $_SERVER["QUERY_STRING"];

if(file_exists($filepath)){
	$value = preg_split("/\./", $_SERVER["QUERY_STRING"]);
	if($value[1] == 'php' or $value[1] == 'phtml'){
		// php ファイルの表示
		require($filepath);
		exit;
	}elseif($value[1] == 'wmv'){
		// wmvファイル
		header("Content-type: video/x-ms-wmv");
		readfile($filepath);
		exit;
	}else{
		// その他ファイル以外の表示
		$fsize = filesize($filepath);
		header("Content-Length: $fsize");
		readfile($filepath);
		exit;
	}
}else{
	// Not Found
	print 'Not Found.';
	exit;
}
exit;
?>

上記の認証が通れば、
画像やHTMLファイルは問題なくWin, Mac どちらでも表示されます。
ただ wmv ファイルを読み込む時だけ Mac だけがエラーを返してきます。
Win は問題ありません。

メンバーディレクトリ以外の一般の方も閲覧できるところでは
フィルタリングはおこなっておらず、エラーはおこりません。
なので、上記の PHP がよろしくないとあたりをつけてみたのですが、
どうにも糸口がつかめません。

要は権限のないアクセスをはじき、権限があればファイルを表示するという
感じのものが出来ればと考えています。

他の実装方法も含めまして、どなたかお知恵をお持ちの方、
いらっしゃいましたらよろしくお願いいたします。


/* --------------------
 Bierce(ビアス)
 牛嶋 英樹
 hide @ bierce-web.net 
-------------------- */




PHP-users メーリングリストの案内