PHP中如何实现获取IP地址的五种方法及用户登录数据插入?

更新于
2026-09-23 15:41:06
42阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计698个文字,预计阅读时间需要3分钟。

PHP中如何实现获取IP地址的五种方法及用户登录数据插入?

PHP获取IP地址的五种方法及用户登录日志操作示例

本文介绍了PHP获取IP地址的五种方法,并提供了用户登录日志操作实例,供大家参考。

一、获取IP地址的五种方法

1. $_SERVER['REMOTE_ADDR']

2.$_SERVER['HTTP_CLIENT_IP']

3.$_SERVER['HTTP_X_FORWARDED_FOR']

4.$_SERVER['HTTP_X_FORWARDED']

5.$_SERVER['HTTP_VIA']

二、用户登录日志操作实例

以下是一个简单的用户登录日志操作示例:

php

// 将登录日志保存到数据库$db=new mysqli('localhost', 'root', 'root', 'test');$db->query(INSERT INTO login_log (user_id, login_time) VALUES ($userId, '$loginTime'));

if ($db->affected_rows > 0) { echo 用户登录成功,并记录了登录日志!;} else { echo 用户登录失败,无法记录登录日志!;}

$db->close();?>

推荐使用第二种方法获取IP地址,因为它能更好地应对代理和负载均衡的情况。

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

PHP中如何实现获取IP地址的五种方法及用户登录数据插入?

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程序设计有所帮助。

本文共计698个文字,预计阅读时间需要3分钟。

PHP中如何实现获取IP地址的五种方法及用户登录数据插入?

PHP获取IP地址的五种方法及用户登录日志操作示例

本文介绍了PHP获取IP地址的五种方法,并提供了用户登录日志操作实例,供大家参考。

一、获取IP地址的五种方法

1. $_SERVER['REMOTE_ADDR']

2.$_SERVER['HTTP_CLIENT_IP']

3.$_SERVER['HTTP_X_FORWARDED_FOR']

4.$_SERVER['HTTP_X_FORWARDED']

5.$_SERVER['HTTP_VIA']

二、用户登录日志操作实例

以下是一个简单的用户登录日志操作示例:

php

// 将登录日志保存到数据库$db=new mysqli('localhost', 'root', 'root', 'test');$db->query(INSERT INTO login_log (user_id, login_time) VALUES ($userId, '$loginTime'));

if ($db->affected_rows > 0) { echo 用户登录成功,并记录了登录日志!;} else { echo 用户登录失败,无法记录登录日志!;}

$db->close();?>

推荐使用第二种方法获取IP地址,因为它能更好地应对代理和负载均衡的情况。

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

PHP中如何实现获取IP地址的五种方法及用户登录数据插入?

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程序设计有所帮助。