首页 > 开发 > PHP > 正文

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

2024-05-04 22:40:47
字体:
来源:转载
供稿:网友

本文实例讲述了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常见数据库操作技巧汇总》

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表