设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中实现获取IP和地理位置类分享

发布时间:2022-07-27 12:51 所属栏目:121 来源:互联网
导读:这篇文章主要介绍了PHP中实现获取IP和地理位置类分享,本文地理定位使用的是SINA的通用接口,需要的朋友可以参考下 发现之前有一个脚本没有写完,简单扩充了一下。 获取IP使用的是经典的逻辑,地理定位使用的是SINA的通用接口。 使用方法详见源码: 代码如下:
  这篇文章主要介绍了PHP中实现获取IP和地理位置类分享,本文地理定位使用的是SINA的通用接口,需要的朋友可以参考下
 
  发现之前有一个脚本没有写完,简单扩充了一下。
 
     获取IP使用的是经典的逻辑,地理定位使用的是SINA的通用接口。
 
  使用方法详见源码:
 
  代码如下:
  <?php
  /*
  * GET LOCATION BY SINA IP INTERFACE
  *
  * @SOULTEARY 2013.04.14
  */
  classIP
  {
  private $args=array();
 
  function__construct()
  {
  $this->args=self::init_args(func_get_args());
  $ip=self::GetIP();
 
  $ret=preg_match_all('/(/d+/.){3}/d+/i',$ip,$result);
  if(!$ret){
  returnfalse;
  }else{
  $result=$result[0];
  }
 
  if(isset($this->args['ONLYIP'])&&$this->args['ONLYIP']==true){
 
  if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){
  $result=json_encode($result);
  }else{
  $result=implode(',',$result);
  }
  if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){
  echo$result;
  returntrue;
  }else{
  return$result;
  }
  }else{
 
  $apiURL='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip='.$result[0];
  if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){
  $apiURL.='&format=json';
  $return=$this->ipCURL($apiURL);
  }else{
  $return=$this->ipCURL($apiURL);
  $return=iconv("GBK//IGNORE","UTF-8",$return);
  }
 
  if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){
  echo$return;
  returntrue;
  }else{
  return$return;
  }
 
  }
 
  }
 
  public functioninit_args($args)
  {
  $result=array();
  for($i=0,$n=count($args);$i<$n;$i++){
  $result=self::associative_push($args[$i],$result);
  }
  return$result;
  }
 
  public functionassociative_push($arr,$tmp)
  {
  if(is_array($tmp)){
  foreach($tmpas$key=>$value){
  $arr[$key]=$value;
  }
  return$arr;
  }
  returnfalse;
  }
 
  public functionGetIP()
  {
  if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],'unknown')){
  return$_SERVER['HTTP_X_FORWARDED_FOR'];
  }elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
  return$_SERVER['REMOTE_ADDR'];
  }
  }
 
  private functionipCURL($url)
  {
  $ch=curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_HEADER,0);
  ob_start();
  curl_exec($ch);
  curl_close($ch);
  $result=ob_get_contents();
  ob_end_clean();
  return$result;
  }
  }
 
  ?>
  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="utf8">
  <title>demo</title>
  <script type="text/javascript">
  varip="<?php new IP(array('ONLYIP'=>true, 'ECHO'=>true));?>";
  vardata=<?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?>;
  varresult='';
  for(oo indata){
  result+=oo+':'+data[oo]+"/n";
  }
  alert(result+ip);
  </script>
  </head>
  <body>
  <h1>CODE:</h1>
 
  <h2>GETIP</h2>
 
  <p>'ONLYIP'=>true,'ECHO'=>true</p>
 
  <p><?phpnewIP(array('ONLYIP'=>true,'ECHO'=>true));?></p>
 
  <P>'ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true</P>
 
  <p><?phpnewIP(array('ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true));?></p>
 
  <h2>GET Location</h2>
 
  <p>'ECHO'=>true</p>
 
  <p><?phpnewIP(array('ECHO'=>true));?></p>
 
  <p>'FORMAT'=>'JSON','ECHO'=>true</p>
 
  <p><?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?></p>
  </body>
  </html>。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读