2017-12-22 8 views
0

私はあなたにいくつかのビデオ、写真、およびその他のファイルへのアクセスを与えるログインをしようとしています。私はPHPとgetリクエスト(www.example.com/foo?video1)でこれを行うことができますし、彼らは何らかの種類のクッキーを持っていることを確認していますが、私はソースファイル(www.example.com/videos/video1.mp4)のリンクを入力するだけで誰かを防ぐ方法がわかりません。人々がソースファイルにアクセスするのを防ぐために、私は離れている必要があります。ログインしていない人がソースビデオにアクセスするのを防ぐにはどうすればいいですか?

システム:

  • MacOSのシエラ10.12.6

  • アパッチ

おかげで、 ジョシュ

+0

アクセスを許可する前にログインしたユーザーを確認できないのはなぜですか? – Akintunde007

答えて

-1

は、公開されていないいくつかのディレクトリ内のソースファイルを置きます、またはHTAccessを使用します。 次に、file_get_contents()を使用してエコーしてビデオを吐き出します。

getvideo.phpビデオ=テスト

<?php 
if($_SESSION["username"]!==null)//whatever auth mechanism 
{ 
if(file_exists("videos/". str_replace([ '\\', '.', '/'], '', $_GET["video"]). ".mp4")) 
{ 
header("Content-Type: video/mp4"); 
readfile("videos/". str_replace([ '\\', '.', '/'], '', $_GET["video"]). ".mp4"); 
} 

else 
{ 
header("HTTP/1.1 404 Not Found"); 
} 
} 
else 
{ 
header("HTTP/1.1 401 Unauthorized"); 
} 
exit; 
?> 
0

は、ここでは、Apacheを使用している場合でしょう? それは次のようになります。

Rewrite moduleがオンになっていることを確認してください。

<?php 
/** 
* require your login/db files here 
* and check if the user is logged in, 
* if it isn't redirect back or whatever you need 
*/ 

$video = $_GET['video']; 
$video = str_replace('..', '', $video); // prevent ../../file 

if (file_exists($video)) { 
    header('Content-type: ' . mime_content_type($video)); 
    echo file_get_contents($video); 
} else { 
    // 404... 
} 

は今、あなたは呼び出すことができます。このような何かをvideo.phpという名前のファイルを作成し、今

RewriteEngine On 

RewriteRule . video.php?video=$1 

以下の内容で、あなたの動画のディレクトリに.htaccessファイルを作成します。 yoursite.com/videos/video.mp4にアップロードし、ビデオディレクトリにビデオファイルを置きます。

+0

パーフェクトは感謝を使用します。 – Josh

+0

私は帯域幅を最適化するreadfile'ingをお勧めします – dGRAMOP

関連する問題