如果我們在https://ipinfo.io/都後面接上IP,例如:https://ipinfo.io/168.95.1.1 就可以得到168.95.1.1這個ip的資訊
當然前述兩種方式適合於人工閱讀,如果要讓程式判斷就比較不合適。
https://ipinfo.io/可以註冊後取得API的token後依照說明使用API,這裡介紹一種更簡便的方式
https://ipinfo.io/168.95.1.1/geo ( https://ipinfo.io/168.95.1.1/json 資料更齊全)
這種方式可以取得 168.95.1.1的JSON資料,然後就可以運用到javascript或php上了,底下以php為例子解說:
輸入 https://ipinfo.io/168.95.1.1/geo
看到的是這樣的資料
ip | "168.95.1.1" |
city | "" |
region | "" |
country | "TW" |
loc | "23.5000,121.0000" |
其中country 表示國家,台灣的代碼是TW
本校的xoops網站位置在/nlps2014/
而/nlps2018/則只是一個簡單的純網頁(原來網站的截圖,加上中文版和英文版的連結)。
在www.nlps.tyc.edu.tw的首頁加上這樣的index.php
$myip= $_SERVER['REMOTE_ADDR'];
$web="/nlps2014/";
if (substr($myip,0,3) !='10.' && substr($myip,0,7) !='163.30.' ) {
$json= file_get_contents("https://ipinfo.io/$myip/geo");
if (trim($json)!='') {
$iparr = json_decode($json,true);
if ($iparr['country'] !='TW') $web="/nlps2018/";
} else {
die("ERROR IPINFO");
}
}
header("Location :$web");
這樣的話如果是台灣的瀏覽器就會被導向 主網頁,如果是外國網站則會被導向 簡單網頁,當然您也可以直接導向代管的英文版。
PS. 直接導向英文版會有一個嚴重的缺點,以後用google搜尋貴校名稱會找不到貴校網站或者是顯示英文網站。
2018-08-01補充
原本使用的好好,但是今天出現大量的ERROR IPINFO,似乎ipinfo不給用了,所以我另外寫了一個用自己的資料庫去檢查ip的API程式 http://163.30.200.26/twip.php
它的使用方法如下:
http://163.30.200.26/twip.php?ip=8.8.8.8
http://163.30.200.26/twip.php?ip=163.30.4.1
它的回應只有兩種,一是yes ,一是no,底下是使用範例
$myip= $_SERVER['REMOTE_ADDR'];
$web="/nlps2014/";
if (substr($myip,0,3) !='10.' && substr($myip,0,7) !='163.30.' ) {
$yesno= file_get_contents("http://163.30.200.26/twip.php?ip=$myip");
if (trim($yesno)!='') {
if ($yesno=='no') $web="/nlps2018/";
} else {
die("ERROR IPINFO");
}
}
header("Location :$web");
沒有留言:
張貼留言