PHP 獲取ip地址代碼匯總
更新時(shí)間:2015年07月05日 15:48:44 投稿:hebedich
本文給大家匯總介紹了6種php獲取IP的方法,有簡單有復(fù)雜,大家根據(jù)自己的項(xiàng)目需求,自由選擇吧。
代碼一:
function getip() { static $ip = ''; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HTTP_CDN_SRC_IP'])) { $ip = $_SERVER['HTTP_CDN_SRC_IP']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { foreach ($matches[0] AS $xip) { if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) { $ip = $xip; break; } } } return $ip; }
代碼二:
<?php error_reporting (E_ERROR | E_WARNING | E_PARSE); if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){ $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; } elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){ $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; } elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){ $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; } elseif (getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("REMOTE_ADDR")){ $ip = getenv("REMOTE_ADDR"); } else{ $ip = "Unknown"; } echo $ip; ?>
方法三:
<?php $iipp = $_SERVER["REMOTE_ADDR"]; echo $iipp ; ?>
方法四:
<?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; echo $user_IP ?>
方法五:
<?php function get_real_ip() { $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if($ip){ array_unshift($ips, $ip); $ip = FALSE; } for($i = 0; $i < count($ips); $i++){ if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])){ $ip = $ips[$i]; break; } } } return($ip ? $ip : $_SERVER['REMOTE_ADDR']); } echo get_real_ip(); ?>
方法六:
<?php if(getenv('HTTP_CLIENT_IP')){ $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')){ $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')){ $onlineip = getenv('REMOTE_ADDR'); } else{ $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; } echo $onlineip; ?>
您可能感興趣的文章:
- php利用新浪接口查詢ip獲取地理位置示例
- php讀取qqwry.dat ip地址定位文件的類實(shí)例代碼
- PHP準(zhǔn)確取得服務(wù)器IP地址的方法
- php實(shí)現(xiàn)根據(jù)IP地址獲取其所在省市的方法
- PHP curl偽造IP地址和header信息代碼實(shí)例
- PHP 獲取客戶端真實(shí)IP地址多種方法小結(jié)
- PHP中根據(jù)IP地址判斷城市實(shí)現(xiàn)城市切換或跳轉(zhuǎn)代碼
- php實(shí)現(xiàn)獲取局域網(wǎng)所有用戶的電腦IP和主機(jī)名、及mac地址完整實(shí)例
- php中獲取遠(yuǎn)程客戶端的真實(shí)ip地址的方法
- php新浪微博登錄接口用法實(shí)例
- PHP采用curl模仿用戶登陸新浪微博發(fā)微博的方法
- PHP基于新浪IP庫獲取IP詳細(xì)地址的方法
相關(guān)文章
PHP ajax跨子域的解決方案之document.domain+iframe實(shí)例分析
這篇文章主要介紹了PHP ajax跨子域的解決方案之document.domain+iframe,結(jié)合實(shí)例形式分析了PHP ajax跨子域的解決方案document.domain+iframe的基本原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03PHP實(shí)現(xiàn)的注冊,登錄及查詢用戶資料功能API接口示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的注冊,登錄及查詢用戶資料功能API接口,結(jié)合具體實(shí)例形式分析了php服務(wù)器端用戶注冊、登陸、查詢及curl登陸查詢功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫常用技巧分析總結(jié)
這篇文章主要介紹了PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫常用技巧,結(jié)合實(shí)例形式分析總結(jié)了PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫操作步驟、遇到的問題及相應(yīng)的解決方法,需要的朋友可以參考下2019-05-05解析smarty模板中類似for的功能實(shí)現(xiàn)
本篇文章是對smarty模板中類似for的功能實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06使用PHP把HTML生成PDF文件的幾個(gè)開源項(xiàng)目介紹
這篇文章主要介紹了使用PHP把HTML生成PDF文件的幾個(gè)開源項(xiàng)目介紹,本文羅列了FPDF、DomPDF、TCPDF等項(xiàng)目的特點(diǎn),需要的朋友可以參考下2014-11-11PHP基于關(guān)聯(lián)數(shù)組20行代碼搞定約瑟夫問題示例
這篇文章主要介紹了PHP基于關(guān)聯(lián)數(shù)組20行代碼搞定約瑟夫問題,結(jié)合具體實(shí)例分析了php使用關(guān)聯(lián)數(shù)組解決約瑟夫問題的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11