2013-04-07 4 views
0

Я пытаюсь получить IP-адрес с одного сайта (www.website.com) , используя два разных метода.Pull IP-адрес с сайта

На сайте www.website.com я использую $_SERVER['REMOTE_ADDR'] и отправлю IP-адрес www.website.com на сайт www.website2.com. Затем я использую gethostbyname("www.website.com") на www.website2.com для поиска IP-адреса www.website.com, чтобы сравнить их обоих, но по какой-то причине они не совпадают.

Почему IP-адреса отличаются друг от друга?

+0

ли они оба размещены на одном сервере имен? – christopher

+0

Да на данный момент, но некоторых сайтов может и не быть. –

+0

Они могут размещаться на том же сервере имен и сервере, в то же время имея разные IP-адреса, если они используют выделенные IP-адреса. Сервер имен просто прав, чтобы направить пользователей на правильный IP-адрес. – RageD

ответ

1

$_SERVER['REMOTE_ADDR'] дает IP-адрес клиента, делающего HTTP-запрос, а не сервер, на котором размещен скрипт (который хранится в $_SERVER['SERVER_ADDR']).

+0

'REMOTE_HOST' будет работать правильно? –

+0

@ChristianDaley - Этот ключ не появляется, когда я запускаю 'print_r ($ _ SERVER)' на моем сервере, так что я не ожидал бы этого. – Quentin

+0

'SERVER_ADDR' работал отлично! Благодаря! Дайте ему 8 минут, и я отмечу это как ответ. –

-1

Это также объясняет IP-адресов, поступающих от HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR

/** 
* getVisitorIP 
* 
* Gets visitor IP address 
* 
* @return string Visitor IP address 
*/ 
public function getVisitorIP() { 
    $ip = $_SERVER['REMOTE_ADDR'];  
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
     $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    return $ip; 
}