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
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论