PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
程序员文章站
2023-11-17 22:03:22
本文实例讲述了php实现获取ip地址的5种方法,以及插入用户登录日志操作。分享给大家供大家参考,具体如下:
php 获取ip地址的5种方法,插入用户登录日志实例,推荐使用...
本文实例讲述了php实现获取ip地址的5种方法,以及插入用户登录日志操作。分享给大家供大家参考,具体如下:
php 获取ip地址的5种方法,插入用户登录日志实例,推荐使用第二种方法
<?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;
实例:在用户登录时获取用户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相关内容感兴趣的读者可查看本站专题:《php网络编程技巧总结》、《php curl用法总结》、《php数组(array)操作技巧大全》、《php字符串(string)用法总结》、《php数据结构与算法教程》、《php程序设计算法总结》、《php数学运算技巧总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。