亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP如何獲取訪問者的IP地址和歸屬地方式詳解

 更新時間:2023年10月26日 09:50:28   作者:文煞  
在用PHP開發(fā)程序的時候,很多時候我們需要獲取訪問者的一些關(guān)鍵信息,比如訪問者的IP地址或者訪問者來自哪里(IP歸屬地),也便于我們對網(wǎng)站進(jìn)行一些內(nèi)容的限制或者功能的補充完善等等,本文就來教大家用PHP如何獲取訪問者的IP地址和歸屬地

一、什么是IP地址

IP地址是互聯(lián)網(wǎng)協(xié)議(IP協(xié)議)定義的一種用于標(biāo)識網(wǎng)絡(luò)上主機(計算機或其他設(shè)備)的地址。它是一個由四個數(shù)字組成的標(biāo)識符,每個數(shù)字范圍是0到255,以點分隔開。IP地址用于在互聯(lián)網(wǎng)上進(jìn)行通信和傳輸數(shù)據(jù),類似于人類使用的郵政地址。它可以用來確定一個設(shè)備在網(wǎng)絡(luò)中的位置,以便其他設(shè)備能夠準(zhǔn)確地發(fā)送數(shù)據(jù)到該設(shè)備。  IP地址分為IPv4和IPv6兩個版本。IPv4是目前廣泛使用的版本,采用32位地址格式。而IPv6是較新的版本,采用128位地址格式,為了應(yīng)對互聯(lián)網(wǎng)用戶數(shù)量的增長而設(shè)計。

我們常用的IP4地址如:8.8.8.8,114.114.114.114(等類似由4組數(shù)字組成的網(wǎng)絡(luò)地址)。本地IP地址如:192.168.0.1,127.0.0.1等。

二、PHP如何獲取IP地址

PHP直接獲取訪問者IP地址:

$ip=$_SERVER["REMOTE_ADDR"];//訪問者IP

這里我們可以通過系統(tǒng)變量$_SERVER["REMOTE_ADDR"]取得訪問者的IP地址并存入自定義變量$ip。方便后續(xù)代碼引用。當(dāng)然這里是通過PHP直接獲取用戶的IP地址,如果用戶使用了代理服務(wù)器,這該IP地址就是代理服務(wù)器的IP地址,而非用戶的真實IP地址。

如果需要獲取用戶的真實IP地址,可以嘗試使用$_SERVER['HTTP_X_FORWARDED_FOR']。但是,這個值不是所有的代理服務(wù)器都會設(shè)置,所以結(jié)果可能為空或者不準(zhǔn)確。如果需要準(zhǔn)確獲取用戶的真實IP地址,可以使用一些第三方的庫或服務(wù)。

三、獲取IP地址的歸屬地

我們無法通過PHP直接獲得IP地址的歸屬地,但是我們可以利用本地IP庫(離線下載)或者在線IP庫對IP地址進(jìn)行匹配。如果該IP地址在IP庫或者該IP特征進(jìn)行匹配即可獲得歸屬地。

1、百度在線API接查詢

$ip=$_SERVER["REMOTE_ADDR"];
$ak='**********';//這里需要你自己申請并獲取$ipurl='https://api.map.baidu.com/location/ip?ak='.$ak.'&ip='.$ip; //GET請求
$fh= file_get_contents("$ipurl");
$jsonarr = json_decode($fh, true);
if($jsonarr['status'] == 0)
{
$result = $jsonarr['content'];
$result = $result['address_detail'];
$froms='中國-'.$result['province'].'-'.$result['city'];
}else{
echo "未能查詢到".$ip."的歸屬地";
} 

這里是通過百度api的IP查詢接口進(jìn)行查詢的。網(wǎng)絡(luò)很多代碼通過淘寶IP庫查詢,但是我發(fā)現(xiàn)淘寶IP庫的api接口好像關(guān)閉了,不能正常使用了。

2、通過其他api接口查詢

$token = '*******'; // 用戶token ,登錄系統(tǒng)后可獲取到
$fh= file_get_contents("https://67ip.cn/check?ip=$ip&token=$token");
$jsonarr = json_decode($fh, true);;
if($jsonarr['code']=='200'){
$result = $jsonarr['data'];
if($result['city']=='0'){
$result['city']='未知';
}
if($result['service']=='0'){
$result['service']='';
}
$froms=$result['country'].'-'.$result['city'].'-'.$result['service'];    
}else{
$froms='火星';
}

本文介紹的都是通過api接口進(jìn)行查詢,為什么不介紹本地IP庫進(jìn)行查詢呢?主要是本人沒有獲取到本地IP庫的數(shù)據(jù)文件,不知道本地IP庫的格式,無法完成有效的對應(yīng)的代碼,如果誰有本地IP庫可以分享我一份,謝謝。不過我們可以舉個例子來完成。

3、本地IP庫獲取歸屬地

假設(shè)我本地IP庫的地址數(shù)據(jù)內(nèi)容如下

文件名稱:ip.txt
192.168.0.1:路由器
192.168.0.2:老婆的電腦
192.168.0.3:兒子的ipad
192.168.0.4:老媽的手機
192.168.0.5:老爹的手機
118.118.118.188:本人的辦公電腦
...

我們可以通過IP匹配的方法獲得訪問者信息:

$visitorIp = $_SERVER['REMOTE_ADDR'];
$ipDataFile = 'ip.txt';
// 讀取ip.txt文件中的數(shù)據(jù)
$ipData = file_get_contents($ipDataFile);
// 按行拆分?jǐn)?shù)據(jù)
$ipRecords = explode("\n", $ipData);
// 遍歷IP記錄,查找匹配的訪問者信息
foreach ($ipRecords as $record) {
    $parts = explode(":", $record);
    $ip = trim($parts[0]);
    $info = trim($parts[1]);
    // 匹配IP地址
    if ($visitorIp === $ip) {
        echo "訪問者IP:".$visitorIp."<br>";
        echo "訪問者信息:".$info;
        break;
    }
}

以上就是PHP如何獲取訪問者的IP地址和歸屬地方式詳解的詳細(xì)內(nèi)容,更多關(guān)于PHP獲取IP地址歸屬地的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論