PHP限制特定城市禁止訪問 根據(jù)IP地址獲取所在地

因為網(wǎng)站有時候需要限制特定城市身份不讓訪問扑馁,就可以ii根據(jù)客戶端IP地址獲取所屬城市進而進行限制訪問穆桂。

1.技術(shù)點在于解決如何獲取客戶端地址深胳,因為有可能客戶端使用了代理模式,那么就需要獲取真實IP地址佩研。

2.根據(jù)IP地址使用百度開放API和騰訊地圖API獲取IP所在城市柑肴,限制訪問。

具體實現(xiàn)方式:

?獲取真實IP地址

主要就是判斷三個值旬薯,存在即可

function get_client_ip() {? ? $ip_address = '';? ? if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {? ? ? ? $ip_list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);? ? ? ? $ip_address = trim(end($ip_list));? ? }? ? else if (isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP'])) {? ? ? ? $ip_address = $_SERVER['HTTP_CLIENT_IP'];? ? }? ? else if (isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {? ? ? ? $ip_address = $_SERVER['REMOTE_ADDR'];? ? }? ? return $ip_address;}

?根據(jù)IP地址獲取城市地區(qū)

如果客戶端用了代理反向代理晰骑,IP地址可能會有端口號,所以需要處理掉端口號绊序。

下面使用的是騰訊地圖的API硕舆,需要去申請一個key,免費的申請地址骤公。獲取的IP信息根據(jù)結(jié)構(gòu)獲取IP的省份和城市信息返回即可抚官。

https://lbs.qq.com/

function get_city() {? $realip = get_client_ip();? $realip = preg_replace('/:\d+/', '', $realip); //去除端口號??$key = '你的key';? $url="https://apis.map.qq.com/ws/location/v1/ip?ip=".$realip."&key=".$key;? // 使用curl? $curl = curl_init();? curl_setopt($curl, CURLOPT_URL, $url);? curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);? $response = curl_exec($curl);? curl_close($curl);? // 解碼JSON數(shù)據(jù)為PHP數(shù)組? $data = json_decode($response, true);? //true解析成 數(shù)據(jù)結(jié)構(gòu)? $data = $data['result']['ad_info']['province'].$data['result']['ad_info']['city'];? return $data;}

還有一個方式是使用百度開放API,這個不需要申請賬號阶捆,直接構(gòu)戰(zhàn)URL地址就行耗式,具體使用哪個看識別正確率吧,在我試驗兩個沒啥區(qū)別趁猴,兩者的區(qū)別在于返回的數(shù)據(jù)結(jié)構(gòu)會有不一樣,所以需要不同的索引值獲取到城市信息彪见。

http://opendata.baidu.com/api.php?query=ip地址&co=&resource_id=6006

function get_city(){? $realip = get_client_ip();? $realip = preg_replace('/:\d+/', '', $realip); //去除端口號? $api = "http://opendata.baidu.com/api.php?query=" .$realip. "&co=&resource_id=6006";? $ch = curl_init();? curl_setopt($ch, CURLOPT_URL, $api);? curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);? curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);? curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);? $handles = curl_exec($ch);? curl_close($ch);? $handles = iconv('GB2312', 'UTF-8', $handles);? $arr = json_decode($handles, true);? return $arr["data"][0]["location"];}

?調(diào)用獲取的城市處理特定限制禁止訪問

這里設置了深圳地區(qū)不讓訪問儡司,使用php返回頭部信息404或者其他錯誤信息。

$local = get_city();if (strpos($local,"深圳") !==false) {? header('HTTP/1.1 404 Not Found');? exit();}

?頁面URL不跳轉(zhuǎn)顯示錯誤

如果在服務器上設置了404或者于上面的對應的錯誤頁面那么就可以實現(xiàn)URL地址不改變返回錯誤頁面余指,下面是nginx配置404錯誤捕犬,一般寶塔都帶有只需要把前面的#注釋解除即可

#ERROR-PAGE-START? 錯誤頁配置,可以注釋酵镜、刪除或修改 error_page 404 /404.html;

當然也可以弄個特定的頁面碉碉,比如給個提示啥的,提示該城市禁止訪問等淮韭,返回給客戶端就行了垢粮。

本文地址:https://www.ydqic.com/47939.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市靠粪,隨后出現(xiàn)的幾起案子蜡吧,更是在濱河造成了極大的恐慌,老刑警劉巖占键,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昔善,死亡現(xiàn)場離奇詭異,居然都是意外死亡畔乙,警方通過查閱死者的電腦和手機君仆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人返咱,你說我怎么就攤上這事钥庇。” “怎么了洛姑?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵上沐,是天一觀的道長。 經(jīng)常有香客問我楞艾,道長参咙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任硫眯,我火速辦了婚禮蕴侧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘两入。我一直安慰自己净宵,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布裹纳。 她就那樣靜靜地躺著择葡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剃氧。 梳的紋絲不亂的頭發(fā)上敏储,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音朋鞍,去河邊找鬼已添。 笑死,一個胖子當著我的面吹牛滥酥,可吹牛的內(nèi)容都是我干的更舞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坎吻,長吁一口氣:“原來是場噩夢啊……” “哼缆蝉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禾怠,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤返奉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吗氏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芽偏,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年弦讽,在試婚紗的時候發(fā)現(xiàn)自己被綠了污尉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膀哲。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖被碗,靈堂內(nèi)的尸體忽然破棺而出某宪,到底是詐尸還是另有隱情,我是刑警寧澤锐朴,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布兴喂,位于F島的核電站,受9級特大地震影響焚志,放射性物質(zhì)發(fā)生泄漏衣迷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一酱酬、第九天 我趴在偏房一處隱蔽的房頂上張望壶谒。 院中可真熱鬧,春花似錦膳沽、人聲如沸汗菜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陨界。三九已至,卻和暖如春痛阻,著一層夾襖步出監(jiān)牢的瞬間普碎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工录平, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缀皱。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓斗这,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啤斗。 傳聞我的和親對象是個殘疾皇子表箭,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容