php 什么函数获取ip,在PHP中获取ip地址的方法有哪些
在PHP中獲取ip地址的方法有哪些
發布時間:2021-02-15 18:37:36
來源:億速云
閱讀:97
作者:Leah
這篇文章給大家介紹在PHP中獲取ip地址的方法有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。<?php ??//方法1:
$ip?=?$_SERVER["REMOTE_ADDR"];
echo?$ip;
//方法2:
$ip?=?($_SERVER["HTTP_VIA"])???$_SERVER["HTTP_X_FORWARDED_FOR"]?:?$_SERVER["REMOTE_ADDR"];
$ip?=?($ip)???$ip?:?$_SERVER["REMOTE_ADDR"];
echo?$ip;
//方法3:
function?getRealIp()
{
$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?
if?(!eregi?("^(10│172.16│192.168).",?$ips[$i]))?{
$ip?=?$ips[$i];
break;
}
}
}
return?($ip???$ip?:?$_SERVER['REMOTE_ADDR']);
}
echo?getRealIp();
//方法4:
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?;
//方法5:
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;
實例:在用戶登錄時獲取用戶IP,插入到數據庫登錄日志表里//增加用戶登錄日志
$ip?=?($_SERVER["HTTP_VIA"])???$_SERVER["HTTP_X_FORWARDED_FOR"]?:?$_SERVER["REMOTE_ADDR"];
$ip?=?($ip)???$ip?:?$_SERVER["REMOTE_ADDR"];
$this->usermodel->addUserlog($userid,$nickname,$ip);
function?addUserlog($userid,$nickname,$ip)?{
try?{
$now?=?date("Y-m-d?H-i-s",time());
$data=array(
'userid'=>$userid,
'nickname'=>$nickname,
'ip'=>$ip,
'logintime'=>$now
);
$insert_query?=?$this->db->insert_string('user_log',?$data);
$this->db->query($insert_query);
return?0;
}?catch?(?Exception?$e?)?{
return?-1;
}
}
日志表結構:CREATE?TABLE?`user_log`?(
`id`?bigint(20)?NOT?NULL?AUTO_INCREMENT,
`userid`?bigint(20)?NOT?NULL,
`nickname`?varchar(50)?NOT?NULL,
`ip`?varchar(50)?NOT?NULL,
`logintime`?datetime?NOT?NULL,
PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?AUTO_INCREMENT=3?DEFAULT?CHARSET=utf8
關于在PHP中獲取ip地址的方法有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
總結
以上是生活随笔為你收集整理的php 什么函数获取ip,在PHP中获取ip地址的方法有哪些的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jvm类加载过程_JVM类生命周期概述:
- 下一篇: 爬get接口_网络字体反爬之起点中文小说