PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
这篇文章主要介绍了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(!emptyempty($_SERVER["HTTP_CLIENT_IP"])){
- $ip = $_SERVER["HTTP_CLIENT_IP"];
- }
- if (!emptyempty($_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