PHP 獲取ip地址代碼匯總
更新時間:2015年07月05日 15:48:44 投稿:hebedich
本文給大家匯總介紹了6種php獲取IP的方法,有簡單有復(fù)雜,大家根據(jù)自己的項目需求,自由選擇吧。
代碼一:
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地址定位文件的類實例代碼
- PHP準確取得服務(wù)器IP地址的方法
- php實現(xiàn)根據(jù)IP地址獲取其所在省市的方法
- PHP curl偽造IP地址和header信息代碼實例
- PHP 獲取客戶端真實IP地址多種方法小結(jié)
- PHP中根據(jù)IP地址判斷城市實現(xiàn)城市切換或跳轉(zhuǎn)代碼
- php實現(xiàn)獲取局域網(wǎng)所有用戶的電腦IP和主機名、及mac地址完整實例
- php中獲取遠程客戶端的真實ip地址的方法
- php新浪微博登錄接口用法實例
- PHP采用curl模仿用戶登陸新浪微博發(fā)微博的方法
- PHP基于新浪IP庫獲取IP詳細地址的方法
相關(guān)文章
PHP ajax跨子域的解決方案之document.domain+iframe實例分析
這篇文章主要介紹了PHP ajax跨子域的解決方案之document.domain+iframe,結(jié)合實例形式分析了PHP ajax跨子域的解決方案document.domain+iframe的基本原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-03-03
PHP實現(xiàn)的注冊,登錄及查詢用戶資料功能API接口示例
這篇文章主要介紹了PHP實現(xiàn)的注冊,登錄及查詢用戶資料功能API接口,結(jié)合具體實例形式分析了php服務(wù)器端用戶注冊、登陸、查詢及curl登陸查詢功能實現(xiàn)技巧,需要的朋友可以參考下2017-06-06
PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫常用技巧分析總結(jié)
這篇文章主要介紹了PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫常用技巧,結(jié)合實例形式分析總結(jié)了PHP5.6.8連接SQL Server 2008 R2數(shù)據(jù)庫操作步驟、遇到的問題及相應(yīng)的解決方法,需要的朋友可以參考下2019-05-05
PHP基于關(guān)聯(lián)數(shù)組20行代碼搞定約瑟夫問題示例
這篇文章主要介紹了PHP基于關(guān)聯(lián)數(shù)組20行代碼搞定約瑟夫問題,結(jié)合具體實例分析了php使用關(guān)聯(lián)數(shù)組解決約瑟夫問題的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11

