2015-05-08 115 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

相关问题