当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-11 11:24:42 浏览: 评论:0 

这篇文章主要介绍了PHP实现获取ip地址的5种方法,以及插入用户登录日志操作,结合实例形式总结分析了php获取访客IP地址的5种常见操作方法,以及将用户登陆信息写入登陆日志数据库相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现获取ip地址的5种方法,以及插入用户登录日志操作,分享给大家供大家参考,具体如下:

php 获取ip地址的5种方法,插入用户登录日志实例,推荐使用第二种方法

  1. <?php  //方法1: 
  2. $ip = $_SERVER["REMOTE_ADDR"]; 
  3. echo $ip
  4. //方法2: 
  5. $ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; 
  6. $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"]; 
  7. echo $ip
  8. //方法3: 
  9. function getRealIp() 
  10.   $ip=false; 
  11.   if(!emptyempty($_SERVER["HTTP_CLIENT_IP"])){ 
  12.     $ip = $_SERVER["HTTP_CLIENT_IP"]; 
  13.   } 
  14.   if (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
  15.     $ips = explode (", "$_SERVER['HTTP_X_FORWARDED_FOR']); 
  16.     if ($ip) { array_unshift($ips$ip); $ip = FALSE; } 
  17.     for ($i = 0; $i < count($ips); $i++) { 
  18.       if (!eregi ("^(10│172.16│192.168)."$ips[$i])) { 
  19.         $ip = $ips[$i]; 
  20.         break
  21.       } 
  22.     } 
  23.   } 
  24.   return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); 
  25. echo getRealIp(); 
  26. //方法4: 
  27. if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) 
  28.   $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; 
  29. elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) 
  30.   $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; 
  31. elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) 
  32.   $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; 
  33. elseif (getenv("HTTP_X_FORWARDED_FOR")) 
  34.   $ip = getenv("HTTP_X_FORWARDED_FOR"); 
  35. elseif (getenv("HTTP_CLIENT_IP")) 
  36.   $ip = getenv("HTTP_CLIENT_IP"); 
  37. elseif (getenv("REMOTE_ADDR")) 
  38.   $ip = getenv("REMOTE_ADDR"); 
  39. else 
  40.   $ip = "Unknown"
  41. echo $ip ; 
  42. //方法5: 
  43. if(getenv('HTTP_CLIENT_IP')) { 
  44.   $onlineip = getenv('HTTP_CLIENT_IP'); 
  45. elseif(getenv('HTTP_X_FORWARDED_FOR')) { 
  46.   $onlineip = getenv('HTTP_X_FORWARDED_FOR'); 
  47. elseif(getenv('REMOTE_ADDR')) { 
  48.   $onlineip = getenv('REMOTE_ADDR'); 
  49. else { 
  50.   $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; 
  51. echo $onlineip

实例:在用户登录时获取用户IP,插入到数据库登录日志表里

  1. //增加用户登录日志 
  2. $ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; 
  3. $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"]; 
  4. $this->usermodel->addUserlog($userid,$nickname,$ip); 
  5. function addUserlog($userid,$nickname,$ip) { 
  6.     try { 
  7.       $now = date("Y-m-d H-i-s",time()); 
  8.       $data=array
  9.         'userid'=>$userid
  10.         'nickname'=>$nickname
  11.         'ip'=>$ip
  12.         'logintime'=>$now 
  13.       ); 
  14.       $insert_query = $this->db->insert_string('user_log'$data); 
  15.       $this->db->query($insert_query); 
  16.       return 0; 
  17.     } catch ( Exception $e ) { 
  18.       return -1; 
  19.     } 

日志表结构:

  1. CREATE TABLE `user_log` ( 
  2.  `id` bigint(20) NOT NULL AUTO_INCREMENT, 
  3.  `userid` bigint(20) NOT NULL
  4.  `nickname` varchar(50) NOT NULL
  5.  `ip` varchar(50) NOT NULL
  6.  `logintime` datetime NOT NULL
  7.  PRIMARY KEY (`id`) 
  8. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

Tags: PHP获取ip PHP登录日志

分享到: