2013-10-22 2 views
0

내가이 간단한 스크립트를 사용하여 IP 얻을 :PHP : 사용자가

<script type="text/javascript"> 
var _mytrack = _mytrack || []; 
_mytrack.push(['_setType', 'SOMETYPE']); 
_mytrack.push(['_setEmail', '[email protected]']); 

(function() { 
var mytrack = document.createElement('script'); 
_mytrack.type = 'text/javascript'; 
_mytrack.async = true; 
mytrack.src = ('https:' == document.location.protocol ? 'https://www' : 'http://www') + '.mytrack.net/tracker.tell.php?i='+_mytrack; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mytrack, s); 
})(); 
</script> 

내 PHP 스크립트 (tracker.tell.php)은 다음과 같습니다

header("content-type: application/javascript"); 
echo "alert('".$_SERVER['REMOTE_ADDR']."');"; 

가 이제 질문은 관련이 $_SERVER['REMOTE_ADDR']은 (JS 경고에서) SERVER의 IP가 아니라 CLIENT의 IP를 제공하기 때문입니다.

+0

PHP 스크립트가 클라이언트가 아닌 서버에서 실행되기 때문에 PHP로 처리하지 못할 수도 있습니다. 이것을 시도했거나 Javascript를 사용해 본 적이 있습니까? – jonhopkins

+1

@jonhopkins 물론 PHP에서 원격 IP를 얻을 수 있습니다 ... 웹 서버가 클라이언트와 어떻게 통신한다고 생각합니까? – Brad

+0

아마도 서버에서 프록시 서버를 실행하고있는 것입니까? – Brad

답변

3

$ _SERVER [ 'REMOTE_ADDR']은 (는) 원격 사용자의 IP 주소를 제공합니다. 프록시 또는 부하 분산 장치를 사용하는 경우, 당신은 사용자가 직접 또는 프록시를 통해 서버에 도달 할 수 있다면 [ 'HTTP_X_FORWARDED_FOR']

후 바로 사용 $ _SERVER를 사용한다 다음 문

$remote_ip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']); 

경우 변수를 JS로 전달하십시오.

+0

젠체하는, 너 멋지다! –

관련 문제