2009-12-02 80 views
0

我在我的PHP服務器上安裝了Net_Geo梨包。PHP中的Net_Geo梨包

這是我正在使用的代碼,

getRecord($ ip); //輸出 echo「Single IP results:
」; echo「
"; 
    print_r($results); 
    echo "
」;多個IP地址的 //示例陣列 $ arr_ips =陣列 ( 的gethostbyname( 「www.google.com」), 的gethostbyname( 「www.heise.de」), 的gethostbyname( 「www.college.ch」 ) ); //從net_geo獲取信息數組 $ results = $ net_geo-> getRecord($ arr_ips); //輸出 echo「Multiple IP results:
」; echo「
"; 
    print_r($results); 
    echo "
」; ?>

但是這段代碼沒有顯示任何結果。 我認爲這段代碼根本不起作用。

這是Net_Geo對象

Net_Geo對象 ( [cache_path] =>的/ tmp/ [cache_ttl] => 30 [DEFAULT_TIMEOUT] => 60 [default_caida_server] =>http://netgeo.caida.org/perl/netgeo.cgi [default_hostip_server ] =>http://api.hostip.info/ [localizer_data] => ./demo.csv [服務] => [cache_prefix] => netgeo [用戶代理] => PHP/netGeo [useragent_version] => 1。0 [array_limit] => 100 [緩存] => Cache_Function對象 ( [到期] => 2592000 [緩存] => 1 [gc_time] => 1 [gc_probability] => 1 [gc_maxlifetime] => 86400 [容器] => Cache_Container_file對象 ( [fileLocking] => [cache_dir的] =>的/ tmp/ [filename_prefix] => netgeo [條目] =>數組 ( )

   [total_size] => 0 
       [max_userdata_linelength] => 257 
       [preload] => 1 
       [id] => 
       [group] => 
       [expires] => 0 
       [cachedata] => 
       [userdata] => 
       [unknown] => 1 
       [encoding_mode] => base64 
       [highwater] => 2048000 
       [lowwater] => 1536000 
       [allowed_options] => Array 
        (
         [0] => encoding_mode 
         [1] => highwater 
         [2] => lowwater 
        ) 

       [group_dirs] => Array 
        (
        ) 

      ) 

     [_debug] => 
     [_default_error_mode] => 
     [_default_error_options] => 
     [_default_error_handler] => 
     [_error_class] => PEAR_Error 
     [_expected_errors] => Array 
      (
      ) 

    ) 

[netgeo_global] => netgeo_global 
[useragent_string] => 
[default_server] => 
[last_target] => 
[applicationName] => 
[alternateServerUrl] => 

感謝

回答

1

Net_Geo::Net_Geo()文檔頁說:

的方法有兩個參數:

bool Net_Geo() (string $applicationName = '' , string $alternateServerUrl = '') 

而這些參數是:

  • string $applicationName - 可選應用程序的名稱在使用的UserAgent輪詢時Netgeo
  • string $alternateServerUrl - 網址Netgeo服務腳本,將被設置爲,除非改變

您沒有傳遞任何這些參數的「http://netgeo.caida.org/perl/netgeo.cgi」 - 這意味着使用默認的Netgeo服務URL ...

...如果您嘗試打開它(http://netgeo.caida.org/perl/netgeo.cgi),您會看到它不起作用;我的Firefox說它無法連接到服務器。

這可能解釋了爲什麼你的代碼不會產生任何預期的輸出:如果單靠一個geolocalition服務器上,並且該服務器不再工作了......


一點題外話:根據pear packages in the Networking section,Net_Geo索引不再保留,最新版本於2006-03-29發佈;這是不是一個好的跡象...

如果你可以安裝PECL包(你可能需要是你的服務器的管理員),也許GeoIP package會感興趣。

+0

感謝您的答案。 但是,我應該傳遞給「applicationName」和「alternateServerUrl」的參數是什麼 – Biranchi 2009-12-02 06:22:22

+0

YOu歡迎關於anser ;;對不起,我絕對不知道你應該使用什麼樣的價值觀;我自己可能不會使用這個包,實際上(這是很古老的,它很久沒有維護,它產生了很多通知......) – 2009-12-02 06:26:06