php根據ip獲取地域,php獲取訪問用戶的ip

本文目錄一覽:

php根據ip地址查地區

自己以前做過一個程序 根據discuz裡面的ip查詢改的

/**

* ip地址所屬地區計算

* 修改自 discuz

* 使用dicuz tinyipdata數據文件

* 將一些英文提示修改為漢字

* $is_simple true的話顯示到市 false顯示到網通電信等等

******/

function convertip($ip,$is_simple=true,$ipfile=’include/data/ip.dat’) {

$return = ”;

if( !file_exists($ipfile) ) $ipfile = ‘../’.$ipfile;

if(preg_match(“/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/”, $ip)) {

$iparray = explode(‘.’, $ip);

if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 $iparray[1] == 168) || ($iparray[0] == 172 ($iparray[1] = 16 $iparray[1] = 31))) {

return ‘區域網’;

} elseif($iparray[0] 255 || $iparray[1] 255 || $iparray[2] 255 || $iparray[3] 255) {

return ‘ERR’;

} elseif($is_simple) {

return change_simply_area(convertip_tiny($ip, $ipfile));

}

else {

return convertip_tiny($ip, $ipfile);

}

}

}

/**

* 從ip文件得到ip所屬地區

*

* 過濾掉了具體的位置(如 網通/電信/**網吧) 基本到市

***/

function convertip_tiny($ip, $ipdatafile) {

static $fp = NULL, $offset = array(), $index = NULL;

$ipdot = explode(‘.’, $ip);

$ip = pack(‘N’, ip2long($ip));

$ipdot[0] = (int)$ipdot[0];

$ipdot[1] = (int)$ipdot[1];

if($fp === NULL $fp = @fopen($ipdatafile, ‘rb’)) {

$offset = unpack(‘Nlen’, fread($fp, 4));

$index = fread($fp, $offset[‘len’] – 4);

} elseif($fp == FALSE) {

return ‘- Invalid IP data file’;

}

$length = $offset[‘len’] – 1028;

$start = unpack(‘Vlen’, $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);

for ($start = $start[‘len’] * 8 + 1024; $start $length; $start += 8) {

if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} = $ip) {

$index_offset = unpack(‘Vlen’, $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . “\x0”);

$index_length = unpack(‘Clen’, $index{$start + 7});

break;

}

}

fseek($fp, $offset[‘len’] + $index_offset[‘len’] – 1024);

if($index_length[‘len’]) {

return mb_convert_encoding(fread($fp, $index_length[‘len’]),’utf-8′,’gb2312′); //將讀出的gb編碼數據轉成utf-8並返回

} else {

return ‘未知’;

}

}

function change_simply_area($area) {

$tmp = explode(‘ ‘,$area); //過濾掉一些具體信息

return $tmp[0];

}

裡面那個ipfile你可以去下載一個discuz 在 ipdata目錄裡面有wry.dat的文件就是了 其實這個就是網上用的最多的那個純真版資料庫 很多顯示ip的qq用的也是那個

這兩個函數的原型參考 discuz 裡面 include\misc.func.php

共同學習進步 :)

如何進行PHP查詢ip所在地

?php

/**

* 根據IP地址取得地理位置

*/

function get_ip_arr()

{

$ip=file_get_contents(“”);

preg_match_all(“/\”(.*)\”/”,$ip,$arr);

return $arr;

}

//返回一個數組,包括地區、IP等信息,自行獲取即可。

?

php獲取了ip地址,用php怎麼獲取ip的地理位置?請大蝦賜教!

用純真ip資料庫啊,這裡有個資料是介紹php操作純真ip資料庫的,是原查詢吧query8.com里提取出來的,用時先去網上搜純真ip資料庫下載,查詢吧php版讀取純真ip資料庫源碼

php如何實現通過ip獲取地理位置

通過ip地址定位介面,調用的百度地圖介面,每人每天有30000次免費調用機會。。

你可以調用我的介面,但不要多次調用。最好是按照我這篇文章中的方法自己搭建一個介面,畢竟我的介面很有可能無法實現你的要求。

著作權歸作者所有。

商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

作者:caijun

鏈接:

來源:

php獲取用戶ip和地區

function getIp() { 

    if (getenv(“HTTP_CLIENT_IP”)  strcasecmp(getenv(“HTTP_CLIENT_IP”), “unknown”)) $ip = getenv(“HTTP_CLIENT_IP”); 

    else if (getenv(“HTTP_X_FORWARDED_FOR”)  strcasecmp(getenv(“HTTP_X_FORWARDED_FOR”), “unknown”)) $ip = getenv(“HTTP_X_FORWARDED_FOR”); 

    else if (getenv(“REMOTE_ADDR”)  strcasecmp(getenv(“REMOTE_ADDR”), “unknown”)) $ip = getenv(“REMOTE_ADDR”); 

    else if (isset($_SERVER[‘REMOTE_ADDR’])  $_SERVER[‘REMOTE_ADDR’]  strcasecmp($_SERVER[‘REMOTE_ADDR’], “unknown”)) $ip = $_SERVER[‘REMOTE_ADDR’]; 

    else $ip = “unknown”; 

   return $ip; 

}

使用這個可以獲取id,至於要把ip轉換從真實地址可以使用新浪有道提供的api或者用本地的QQWry.Dat文件這個文件自己去下載,不過要經常更新

原創文章,作者:ADVU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146923.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ADVU的頭像ADVU
上一篇 2024-10-31 15:33
下一篇 2024-10-31 15:33

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python中接收用戶的輸入

    Python中接收用戶的輸入是一個常見的任務,可以通過多種方式來實現。本文將從以下幾個方面對Python中接收用戶的輸入做詳細闡述。 一、使用input函數接收用戶輸入 Pytho…

    編程 2025-04-29
  • Python彈框讓用戶輸入

    本文將從多個方面對Python彈框讓用戶輸入進行闡述,並給出相應的代碼示例。 一、Tkinter彈窗 Tkinter是Python自帶的圖形用戶界面(GUI)庫,通過它可以創建各種…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Zookeeper ACL 用戶 anyone 全面解析

    本文將從以下幾個方面對Zookeeper ACL中的用戶anyone進行全面的解析,並為讀者提供相關的示例代碼。 一、anyone 的作用是什麼? 在Zookeeper中,anyo…

    編程 2025-04-28
  • mysessioncontext 根據jessionid獲取session為空解決方法

    當我們在使用web應用程序開發時,mysessioncontext 根據jessionid獲取session為空是一個常見的錯誤。為了避免這個錯誤的發生,我們必須了解什麼是sess…

    編程 2025-04-28
  • Python中獲取用戶輸入命令的方法解析

    本文將從多個角度,分別介紹Python中獲取用戶輸入命令的方法,希望能夠對初學者有所幫助。 一、使用input()函數獲取用戶輸入命令 input()是Python中用於獲取用戶輸…

    編程 2025-04-27
  • 如何使用Java List根據某一欄位升序排序

    本文將詳細介紹在Java中如何使用List集合按照某一欄位進行升序排序。具體實現思路如下: 一、定義需要進行排序的Java對象 首先,我們需要定義一個Java對象,該對象包含多個字…

    編程 2025-04-27

發表回復

登錄後才能評論