加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:24:28 所属栏目:PHP教程 来源:网络整理
导读:《PHP中实现获取IP和地理位置类分享》要点: 本文介绍了PHP中实现获取IP和地理位置类分享,希望对您有用。如果有疑问,可以联系我们。 发现之前有一个脚本没有写完,简单扩充了一下. 获取IP使用的是经典的逻辑,地舆定位使用的是SINA的通用接口. PHP学习 使用

《PHP中实现获取IP和地理位置类分享》要点:
本文介绍了PHP中实现获取IP和地理位置类分享,希望对您有用。如果有疑问,可以联系我们。

发现之前有一个脚本没有写完,简单扩充了一下.
获取IP使用的是经典的逻辑,地舆定位使用的是SINA的通用接口.PHP学习

使用办法详见源码:

代码如下:

<必修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,'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>

欢迎参与《PHP中实现获取IP和地理位置类分享》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读