php通过淘宝API查询IP地址归属等信息,_PHP教程
php通过淘宝API查询IP地址归属等信息,
淘宝公司提供了一个很好用的IP地理信息查询接口。
在这里:http://ip.taobao.com/
TaobaoIPQuery2这个类将极大的简化相关的信息查询。
类 TaobaoIPQuery2 文件:
<?php /* Usage: * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress'); */ Class TaobaoIPQuery2{ private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php'; public static function getIPInfo($ip){ $long = ip2long($ip); if($long === 0){ throw new Exception('IP address error', 5); } $ip=long2ip($long); $IPInfo = self::queryIPInfo($ip); return self::parseJSON($IPInfo); } private static function queryIPInfo($ip){ $query = http_build_query(array('ip'=>$ip)); $ch = curl_init(); $options = array( CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query), CURLOPT_RETURNTRANSFER => true, CURLOPT_AUTOREFERER => false, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HEADER => false, CURLOPT_TIMEOUT => 3.0, ); curl_setopt_array($ch, $options); $content = curl_exec($ch); curl_close($ch); return $content; } private static function parseJSON($json){ $O = json_decode ($json, true); if(false === is_null($O)){ return $O; } if (version_compare(PHP_VERSION, '5.3.0', '>=')) { $errorCode = json_last_error(); if(isset(self::$_JSONParseError[$errorCode])){ throw new Exception(self::$_JSONParseError[$errorCode], 5); } } throw new Exception('JSON parse error', 5); } private static $_JSONParseError = array( JSON_ERROR_NONE=>'No error has occurred', JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded', JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded', JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON', JSON_ERROR_SYNTAX=>'Syntax error', JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded', ); }
TaobaoIPQuery2.Class.php:
<?php Class TaobaoIPQuery2{ private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php'; public static function getIPInfo($ip){ $long = ip2long($ip); if($long === 0){ throw new Exception('IP address error', 5); } $ip=long2ip($long); $IPInfo = self::queryIPInfo($ip); return self::parseJSON($IPInfo); } private static function queryIPInfo($ip){ $query = http_build_query(array('ip'=>$ip)); $ch = curl_init(); $options = array( CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query), CURLOPT_RETURNTRANSFER => true, CURLOPT_AUTOREFERER => false, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HEADER => false, CURLOPT_TIMEOUT => 3.0, ); curl_setopt_array($ch, $options); $content = curl_exec($ch); curl_close($ch); return $content; } private static function parseJSON($json){ $O = json_decode ($json, true); if(false === is_null($O)){ return $O; } if (version_compare(PHP_VERSION, '5.3.0', '>=')) { $errorCode = json_last_error(); if(isset(self::$_JSONParseError[$errorCode])){ throw new Exception(self::$_JSONParseError[$errorCode], 5); } } throw new Exception('JSON parse error', 5); } private static $_JSONParseError = array( JSON_ERROR_NONE=>'No error has occurred', JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded', JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded', JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON', JSON_ERROR_SYNTAX=>'Syntax error', JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded', ); }
调用:
$ip = $_SERVER["REMOTE_ADDR"]; $ipquery = new taobaoIPQuery($ip); $region = $ipquery->get_region(); $country = $ipquery->get_country(); $city = $ipquery->get_city();
我们再来看个腾讯api接口的
/* *根据腾讯IP分享计划的地址获取IP所在地,比较精确 */ function getIPLoc_QQ($queryIP){ $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP; $ch = curl_init($url); curl_setopt($ch,CURLOPT_ENCODING ,'gb2312'); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 $result = curl_exec($ch); $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码 curl_close($ch); preg_match("@<span>(.*)</span></p>@iU",$result,$ipArray); $loc = $ipArray[1]; return $loc; }
腾讯的IP分享计划的查询接口连接是:http://ip.qq.com/cgi-bin/searchip,该连接后面会带有一个get参数searchip1,即searchip1=你要查询的IP地址。采用PHP向http://ip.qq.com/cgi-bin/searchip发送http get request,然后获取相应,获得相应结果后,将结果用正则表达式将需要的地理位置信息提取出来就OK了。当然,PHP发送get请求的方法有很多,我用curl来模拟http请求的方法
Curl是PHP的一个扩展,进行测试之前,先确认PHP已经加载了curl扩展。打开PHP配置文件php.ini,搜索 “extension=php_curl.dll”,将其前面的分号(;)去掉,然后重启HTTP服务器,查看phpinfo(),若能看到curl的信 息,说明PHP扩展curl成功
接下来是新浪网的API接口
新浪的IP查询接口地址是:http://int.dpool.sina.com.cn/iplookup/iplookup.php,该连接后面也带有get参数,参数ip=你要查询的IP地址,format=返回的查询结果格式。为了方便起见,返回的格式采用json,即format=json,因此,PHP出来扩展curl外,还得扩展json:
/* *根据新浪IP查询接口获取IP所在地 */ function getIPLoc_sina($queryIP){ $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP; $ch = curl_init($url); //curl_setopt($ch,CURLOPT_ENCODING ,'utf8'); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 $location = curl_exec($ch); $location = json_decode($location); curl_close($ch); $loc = ""; if($location===FALSE) return ""; if (emptyempty($location->desc)) { $loc = $location->province.$location->city.$location->district.$location->isp; }else{ $loc = $location->desc; } return $loc; }
使用getIPLoc_sina("183.37.209.57")即可得到IP地址所在的地址位置。
您可能感兴趣的文章:
- PHP 手机归属地查询 api
- PHP实现手机归属地查询API接口实现代码
- PHP中根据IP地址判断城市实现城市切换或跳转代码
- PHP手机号码归属地查询代码(API接口/mysql)
- php验证手机号码(支持归属地查询及编码为UTF8)
- PHP转换IP地址到真实地址的方法详解
- PHP根据IP地址获取所在城市具体实现
- 免费手机号码归属地API查询接口和PHP使用实例分享
- PHP通过API获取手机号码归属地

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Alipay Php ...

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
