2011-01-07 4 views
0

사용자가 로그인 할 때만 액세스 할 수있는 개인 파일의 디렉토리를 만들려고했습니다. 이렇게하려면 웹 디렉토리 외부의 폴더를 사용하고 허용 된 경우 PHP에 액세스했습니다. .일부 파일을 비공개로 유지

다음은 예입니다 :

function display_movie($file){ 

printf("`<video id='movie' width='960' height='416' controls='controls' onerror='fix()'>`<br/> 
`<source src='movie.php?file=%s' type='video/ogg; codecs=\"theora, vorbis\"'> 
</video>", rawurlencode($file)`); 

} 

이 이미지에 잘 작동하지만, 미디어 플레이어를 나누기. 또한, 나는 리눅스 머신에서만 이것을 로컬에서 테스트했다.

아이디어가 있으십니까? 감사. 당신의 <br /> 무엇을

이 movie.php에 ...

if(file_exists($fileDir . md5($file) . $ext)) { 
    $contents = file_get_contents($fileDir . md5($file) . $ext); 
} 

header('Content-type: video/ogg'); 
echo $contents; 
+0

주세요 movie.php –

+0

th의 내용보기 ose
html 태그는 PHP 코드 – Moak

+0

에 없어야합니다 .... 나는 제대로 게시물을 표시하려고했지만 실패했습니다. 나는 그들을 삭제했지만 – user490895

답변

0

movie.php하고 있습니다로?

movie.php가 파일 내용을 에코하는지 확인하려고 했습니까? (당신의 소스를 볼 수있는 페이지이고, 영화 소스 src "movie.php? file = ..."을 복사해서 브라우저에 붙여 넣습니다. 영화가 나오는지 확인하십시오.)

는 ALLSO 당신은 헤더를 이동해야하고 해당 파일 넣은 사람은 아니다는 다른 표준 영화를 에코 할 수있는 경우는 if 문 안에 메아리 :

if(file_exists($fileDir . md5($file) . $ext)) { 
    $contents = file_get_contents($fileDir . md5($file) . $ext); 
} else { 
    $contents = file_get_contents($fileDir . md5(MOVIE_NOT_FOUND)); 
} 
header('Content-type: video/ogg'); 
echo $contents; 
MOVIE_NOT_FOUND는 당신이 whant 일정, 영화입니다

요청한 것을 찾을 수없는 경우 표시하십시오.

당신이 할 수있는 또 다른 한가지는 당신이 소스 src에 영화 PHP에 대한 완전한 uri를 입력하는 것입니다 (예 : "http : //localhost/some/uri/movie.php? file = ..."

에서 당신이 movie.php


편집있어 당신은 fileDir, $ 파일과 $의 내선 $받을 수 있나요 여기서?를 file_get_contents 문제의주의해야 당신이

$file = $fileDir . md5($file) . $ext; 
header('Content-type: video/ogg'); 
//set aditional headers you may whant here 
ob_clean(); 
flush(); 
if(file_exists($file)) 
{ 
    readfile($file); 
} else { 
    readfile($fileDir . md5(MOVIE_NOT_FOUND)); 
} 
exit; 
+0

그것은 내용을 얻지 만, 구경꾼은 끊어집니다 : 두루마리 doesnt 일 그리고 그 종류의 것. $ fileDir은 파일의 경로이고, $ file =은 auth.php와 $ ext = '. ogv'에서 전달됩니다. 또한, 파일을 다른 디렉토리에서 가져 오지 않고 동일한 디렉토리에서 가져 오면 플레이어 잘 작동합니다. 그러나, 그 ogg는 숨겨져 있지 않습니다. – user490895

+0

그러면 서버가 영화를 전달할 경우 프론트 엔드 (클라이언트 측, html/css/js/whatever)에 문제가있는 것입니다. –

+0

매우 작은 제안 -'$ fileDir. md5 ($ file). $ ext'를 한 번 저장하고 문자열 변수로 저장하면,'file_exists()'와'file_get_contents()'함수에 사용되어이 해결책을 조금 더 깔끔하게 만들 수 있습니다.'header()'호출을 맨 위로 옮긴 다음 결과를 담기 위해'$ content' 변수를 사용하지 않고 그냥 똑바로 에코합니다. –

관련 문제