2009-12-23 4 views
0

리퍼러 사이트에 따라 스크립트를 실행할 수 있는지 궁금합니다. 예를 들어 사용자가 Facebook에서 내 사이트에 액세스하면 스크립트가 활성화되기를 원하지만 사용자가 Google 검색을 통해 사이트에 액세스하면 스크립트가 실행되지 않습니다. 이것이 가능한가?리퍼러를 사용하여 스크립트 실행

답변

2

$_SERVER['HTTP_REFERER']을 테스트하여 사용자가 Facebook에서 왔는지, 다른 방식으로 행동하는지 확인할 수 있어야합니다.

0

가능합니다. 리퍼러는 스푸핑 될 수 있으므로 염두에두면 보안 관련 가치를 기반으로 보안 관련 작업을 수행해서는 안됩니다.

1

서버 측 또는 클라이언트 측 스크립트를 의미합니까?

클라이언트 측에서 document.referrer을 통해 리퍼러에 액세스 할 수 있습니다 (예 : 해당 HTTP 헤더의 철자가 틀린 경우에도 'r'이 두 배로 나타남). 예를 들면 :

if (document.referrer.toLowerCase().indexOf('//www.example.com')) { 
    document.getElementById('message').innerHTML= 'Hello, visitor from example.com'; 
} 
+0

+1은 몰랐어! –

0

나는 같은 것을 할 것입니다 :

if (array_key_exists('HTTP_REFERER', $_SERVER) === true) 
{ 
    // this will give you something like google.com or facebook.com 
    $domain = str_ireplace('www.', '', parse_url($_SERVER['HTTP_REFERER'], 'PHP_URL_HOST')); 

    // check if there is any referer script you want to execute 
    if (is_file('path/to/scripts/' . $domain . '.php') === true) 
    { 
     // include the path/to/scripts/google.com.php for instance 
     include('path/to/scripts/' . $domain . '.php'); 
    } 
} 
관련 문제