Php 从网页发布和请求

Php 从网页发布和请求,php,html,curl,Php,Html,Curl,我有一个记录每个会员IP地址、浏览器和操作系统的系统 我想以某种方式实现 我是否可以将用户的IP发布到他们的网站,提取ISP和country等值,并将它们存储在我的本地MySQL数据库中,以便在对某些滥用权限的用户进行查询时快速访问?IP到位置并不总是准确的,而且很容易克服,但是PHP对Maxmind的GeoIP服务具有本机支持。有关详细信息,请参阅。查看此网站: 它们提供API将ip地址传递给这些服务,以XML/JSON格式返回地理位置,然后可以在PHP脚本上解析 如何使用它的示例如下所示:

我有一个记录每个会员IP地址、浏览器和操作系统的系统

我想以某种方式实现


我是否可以将用户的IP发布到他们的网站,提取ISP和country等值,并将它们存储在我的本地MySQL数据库中,以便在对某些滥用权限的用户进行查询时快速访问?

IP到位置并不总是准确的,而且很容易克服,但是PHP对Maxmind的GeoIP服务具有本机支持。有关详细信息,请参阅。

查看此网站:

它们提供API将ip地址传递给这些服务,以XML/JSON格式返回地理位置,然后可以在PHP脚本上解析

如何使用它的示例如下所示:

<?php
include('ip2locationlite.class.php');

//Load the class
$ipLite = new ip2location_lite;
$ipLite->setKey('<your_api_key>');

//Get errors and locations
$locations = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
$errors = $ipLite->getError();

//Getting the result
echo "<p>\n";
echo "<strong>First result</strong><br />\n";
if (!empty($locations) && is_array($locations)) {
  foreach ($locations as $field => $val) {
    echo $field . ' : ' . $val . "<br />\n";
  }
}
echo "</p>\n";

//Show errors
echo "<p>\n";
echo "<strong>Dump of all errors</strong><br />\n";
if (!empty($errors) && is_array($errors)) {
  foreach ($errors as $error) {
    echo var_dump($error) . "<br /><br />\n";
  }
} else {
  echo "No errors" . "<br />\n";
}
echo "</p>\n";
?>


也许这会让您朝着正确的方向前进?

如果您真的想从中提取数据,那么这里有一个快速脏
函数
。但要使用此功能,您需要下载并包括

这是密码

<?php
  require_once( "path to simplehtmldom.php" );

  $ip_info  = ip_info( "223.196.190.40", 1 );
  print_r( $ip_info );
  /**
   * It will output...
    Array
    (
      [IP Address] => 223.196.190.40
      [Country] => India
      [Region] => Maharashtra
      [City] => Pune
      [ISP] => Idea Isp Subscriber Ip Pool
    )
  **/


  /**
   * ip_info()
   * @param $ip - IP address you want to fetch data from
   * @param $provider IP provider ( 1 = IP2Location, 2 = IPligence, 3 = IP Address Labs, 4 = MaxMind )
   * @return array
   */
  function ip_info( $ip = "127.0.0.1", $provider = 1 ) {
    $indx = array(
      1 =>  10,
      2 =>  11,
      3 =>  12,
      4 =>  13
    );
    $data = array();
    $url  = "http://www.iplocation.net/index.php";
    $ch   = curl_init();
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_FRESH_CONNECT, true );
    curl_setopt( $ch, CURLOPT_FORBID_REUSE, true );
    curl_setopt( $ch, CURLOPT_HEADER, false );
    curl_setopt( $ch, CURLOPT_NOBODY, false );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
    curl_setopt( $ch, CURLOPT_BINARYTRANSFER, false );
    curl_setopt( $ch, CURLOPT_REFERER, $url );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, "query=".urlencode( $ip )."&submit=Query" );
    $response = curl_exec( $ch );

    $html = str_get_html( $response );
    if ( $table = $html->find( "table", $indx[$provider] ) ) {
      if ( $tr1 = $table->find( "tr", 1 ) ) {
        if ( $headers = $tr1->find( "td" ) ) {
          foreach( $headers as $header ) {
            $data[trim( $header->innertext )] = null;
          }
        }
      }
      if ( $tr2 = $table->find( "tr", 3 ) ) {
        reset( $data );
        if ( $values = $tr2->find( "td" ) ) {
          foreach( $values as $value ) {
            $data[key( $data )] = trim( $value->plaintext );
            next( $data );
          }
        }
      }
    }
    unset( $html, $table, $tr1, $tr2, $headers, $values );
    return $data;
  }
?>


感谢im使用iplocation.net的唯一原因是它可以从其他几个服务获取详细信息,如来自IP2Location(产品:DB4)的地理位置数据、来自IPligence(产品:Max)的地理位置数据、来自IP地址实验室(产品:Pro)的地理位置数据还有来自MaxMind的GeoIP Javascript的地理位置数据,所以理想情况下我只想在这个网站上发布和获取,因为我可以将所有这些细节解析到数据库中,你认为这是一个明智的想法吗?因为用户至少更可能使用动态IP地址。这将使所有这些信息变得毫无用处。地理数据来自这里,就像你知道的一样=用户