本文實(shí)例講述了php實(shí)現(xiàn)獲取ip地址的5種方法,以及插入用戶登錄日志操作。分享給大家供大家參考,具體如下:
php 獲取ip地址的5種方法,插入用戶登錄日志實(shí)例,推薦使用第二種方法
<?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 < count($ips); $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;
實(shí)例:在用戶登錄時(shí)獲取用戶ip,插入到數(shù)據(jù)庫(kù)登錄日志表里
//增加用戶登錄日志
$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;
}
}
日志表結(jié)構(gòu):
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