2012-04-14 2 views
0

서버에 파일이 있습니다 (예 : "file.txt"). 다른 도메인에서 요청할 수 있습니다.추적 파일 요청 참조 자

이 파일이 요청 된 도메인에서 어떤 방법으로 추적하여이 데이터를 어딘가에 저장할 수 있습니까?

감사합니다.

+1

를 시도? –

+0

[무엇을 시도 했습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? 여기에서 – ghoti

답변

1

... 난 당신이 파일을로드 할 수 IP address for 제한

또한 파일을 호출 정확한 스크립트를 확인하기 위해 $_SERVER ['HTTP_REFERER']를 사용하거나 약에 충실 조언을 것

는 "다른 도메인에서 요청"무엇을 의미합니까

$allowedReferer = array (
     "http://me.test.com/xxx/bbb/zmy.php?", 
     "https://me.why.com/xxx/bbb/zmy.axpx" , 
     "http://localhost/lab/stockoverflow/" 
); 

$allowedIP = array (
     "192.168.0.1", 
     "192.168.0.1" , 
     "::1" 
); 

$file = "file.pdf"; // its can also be a value form $_GET 

if (! in_array (quickIP(), $allowedIP)) { 
    die ("IP LockDown : " . quickIP()); 
} 

if (! isset ($_SERVER ['HTTP_REFERER'])) { 
    die ("Missing Referer"); 
} 

if (! in_array ($_SERVER ['HTTP_REFERER'] , $allowedReferer)) { 
    die ("Referer Lockdown " . $_SERVER ['HTTP_REFERER']); 
} 

$array = parse_url ($_SERVER ['HTTP_REFERER']); 

header ('Content-type: application/pdf'); 
header ('Content-Disposition: attachment; filename="' . $file . '"'); 
readfile ($file); 

function quickIP() { 
    return (empty ($_SERVER ['HTTP_CLIENT_IP']) ? (empty ($_SERVER ['HTTP_X_FORWARDED_FOR']) ? $_SERVER ['REMOTE_ADDR'] : $_SERVER ['HTTP_X_FORWARDED_FOR']) : $_SERVER ['HTTP_CLIENT_IP']); 
} 
1

예, 그냥 리퍼러를 받아서 저장하십시오. 변수는 $ _SERVER [ 'HTTP_REFERER']

두 가지가 있습니다. PHP (http://teddy.fr/blog/how-serve-big-files-through-php)를 제공하는 PHP 스크립트를 작성하고 PHP를 사용하여 해당 referer를 저장하십시오.

또는 웹 서버는 액세스 한 모든 파일의 로그를 유지합니다. 이 (구조화 된) 로그를 스캔하여 파일에 액세스하고 리퍼러를 확보 할 수 있습니다. AWStats와 같은 여러 로그 분석 프로젝트가 있습니다. 나는 도메인 이름이 당신의 최선의 선택이 될 것이라고 생각하지 않는다

+0

은 하나의 스크립트입니다 : http://www.gidforums.com/t-497.html – j13r