php查询IP地址归属等信息,
php查询IP地址归属等信息,
淘宝公司提供了一个很好用的IP地理信息查询接口。
在这里:http://ip.taobao.com/
TaobaoIPQuery2这个类将极大的简化相关的信息查询。
类 TaobaoIPQuery2 文件:
1 <?php 2 /* Usage: 3 * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress'); 4 5 http://www.cnblogs.com/roucheng/ 6 */ 7 Class TaobaoIPQuery2{ 8 private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php'; 9 public static function getIPInfo($ip){ 10 $long = ip2long($ip); 11 if($long === 0){ 12 throw new Exception('IP address error', 5); 13 } 14 $ip=long2ip($long); 15 $IPInfo = self::queryIPInfo($ip); 16 return self::parseJSON($IPInfo); 17 } 18 19 private static function queryIPInfo($ip){ 20 $query = http_build_query(array('ip'=>$ip)); 21 $ch = curl_init(); 22 $options = array( 23 CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query), 24 CURLOPT_RETURNTRANSFER => true, 25 CURLOPT_AUTOREFERER => false, 26 CURLOPT_FOLLOWLOCATION => false, 27 CURLOPT_HEADER => false, 28 CURLOPT_TIMEOUT => 3.0, 29 ); 30 curl_setopt_array($ch, $options); 31 $content = curl_exec($ch); 32 curl_close($ch); 33 return $content; 34 } 35 36 private static function parseJSON($json){ 37 $O = json_decode ($json, true); 38 if(false === is_null($O)){ 39 return $O; 40 } 41 if (version_compare(PHP_VERSION, '5.3.0', '>=')) { 42 $errorCode = json_last_error(); 43 if(isset(self::$_JSONParseError[$errorCode])){ 44 throw new Exception(self::$_JSONParseError[$errorCode], 5); 45 } 46 } 47 throw new Exception('JSON parse error', 5); 48 } 49 50 private static $_JSONParseError = array( 51 JSON_ERROR_NONE=>'No error has occurred', 52 JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded', 53 JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded', 54 JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON', 55 JSON_ERROR_SYNTAX=>'Syntax error', 56 JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded', 57 ); 58 }
TaobaoIPQuery2.Class.php:
1 <?php 2 Class TaobaoIPQuery2{ 3 private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php'; 4 public static function getIPInfo($ip){ 5 $long = ip2long($ip); 6 if($long === 0){ 7 throw new Exception('IP address error', 5); 8 } 9 $ip=long2ip($long); 10 $IPInfo = self::queryIPInfo($ip); 11 return self::parseJSON($IPInfo); 12 } 13 14 private static function queryIPInfo($ip){ 15 $query = http_build_query(array('ip'=>$ip)); 16 $ch = curl_init(); 17 $options = array( 18 CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query), 19 CURLOPT_RETURNTRANSFER => true, 20 CURLOPT_AUTOREFERER => false, 21 CURLOPT_FOLLOWLOCATION => false, 22 CURLOPT_HEADER => false, 23 CURLOPT_TIMEOUT => 3.0, 24 ); 25 curl_setopt_array($ch, $options); 26 $content = curl_exec($ch); 27 curl_close($ch); 28 return $content; 29 } 30 31 private static function parseJSON($json){ 32 $O = json_decode ($json, true); 33 if(false === is_null($O)){ 34 return $O; 35 } 36 if (version_compare(PHP_VERSION, '5.3.0', '>=')) { 37 $errorCode = json_last_error(); 38 if(isset(self::$_JSONParseError[$errorCode])){ 39 throw new Exception(self::$_JSONParseError[$errorCode], 5); 40 } 41 } 42 throw new Exception('JSON parse error', 5); 43 } 44 /* http://www.cnblogs.com/roucheng/ */ 45 private static $_JSONParseError = array( 46 JSON_ERROR_NONE=>'No error has occurred', 47 JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded', 48 JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded', 49 JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON', 50 JSON_ERROR_SYNTAX=>'Syntax error', 51 JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded', 52 ); 53 }
调用:
$ip = $_SERVER["REMOTE_ADDR"]; $ipquery = new taobaoIPQuery($ip); $region = $ipquery->get_region(); $country = $ipquery->get_country(); $city = $ipquery->get_city();

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。
