2015-05-08 164 views
3

根據此解決方案link,它顯示如何獲取本地Web服務器的Web服務器名稱,但如何通過URL爲遠程服務器執行相同的操作?如何識別遠程主機的網絡服務器名稱

$_SERVER['software']返回一個名字像的Apache/2.2.21(的Win32)PHP/5.3.10

我怎麼能將此解決方案的遠程服務器 - 在這裏例如:http://browserspy.dk/webserver.php

我想可以指定遠程服務器的名稱即$url = 'www.domain.com'; - 我想要得到的Web服務器名稱如上圖所示,在$url

指定我只是在web服務器名稱感興趣的主機名

+1

你試過$ _SERVER ['SERVER_SOFTWARE']和$ _SERVER ['SERVER_SIGNATURE']嗎? – trainoasis

+0

是的,這給了我我的本地Web服務器名稱(工作正常)..但是,我想要獲得遠程主機,而不是我自己的Web服務器名稱。我不認爲我應該使用$ _SERVER,因爲這是僅用於本地服務器 – user3436467

回答

3

這樣做的一種方法是使用PHP的get_headers()函數返回網絡服務器資源ponse頭

$url = 'http://php.net'; 
print_r(get_headers($url)); 

將返回

Array 
(
    [0] => HTTP/1.1 200 OK 
    [1] => Server: nginx/1.6.2 
    [2] => Date: Fri, 08 May 2015 13:21:44 GMT 
    [3] => Content-Type: text/html; charset=utf-8 
    [4] => Connection: close 
    [5] => X-Powered-By: PHP/5.6.7-1 
    [6] => Last-Modified: Fri, 08 May 2015 13:10:12 GMT 
    [7] => Content-language: en 
    [8] => X-Frame-Options: SAMEORIGIN 
    [9] => Set-Cookie: COUNTRY=NA%2C95.77.98.186; expires=Fri, 15-May-2015 13:21:44 GMT; Max-Age=604800; path=/; domain=.php.net 
    [10] => Set-Cookie: LAST_NEWS=1431091304; expires=Sat, 07-May-2016 13:21:44 GMT; Max-Age=31536000; path=/; domain=.php.net 
    [11] => Link: <http://php.net/index>; rel=shorturl 
    [12] => Vary: Accept-Encoding 
) 

,你可以看到你有server頭,告訴你,他們正在運行nginx/1.6.2

,或者你可以在第二個參數添加到函數這將返回所有已解析的標頭

$url = 'http://php.net'; 
$headers = get_headers($url, 1); 
echo $headers['Server']; //ngnix/1.6.2 
+0

這就是我所期待的,但得到這個錯誤'致命的錯誤:調用未定義的函數get_header()'任何想法? – user3436467

+0

它是'get_headers'而不是'get_header'。 –

+0

@ user3436467他們犯了一個錯字。請參閱上面的評論和修改。 –

0

trainoasis是正確的,你可以使用:

$_SERVER['SERVER_SOFTWARE'] 

OR

$_SERVER['SERVER_SIGNATURE'] 

OR

gethostbyaddr($_SERVER['REMOTE_ADDR']); 
+1

不,這是獲得**本地**網絡服務器名稱..我希望它爲一個**遠程**服務器,即'$ url = 'www.domain.com';'我想要www.domain.com的Web服務器名稱 - 有意義嗎? – user3436467

相關問題