如何用PHP实现获取用户IP地址并记录登录信息?

2026-04-02 04:211阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

如何用PHP实现获取用户IP地址并记录登录信息?

本文介绍了PHP实现获取IP地址的5种方法,并展示了如何插入用户登录日志操作。以下为具体内容:

PHP获取IP地址的5种方法

1. 使用`$_SERVER['REMOTE_ADDR']`获取原始IP地址。

2.使用`getenv('HTTP_CLIENT_IP')`获取客户端IP。

3.使用`getenv('HTTP_X_FORWARDED_FOR')`获取代理服务器IP。

4.使用`getenv('HTTP_X_FORWARDED')`获取代理服务器IP。

5.使用`getenv('HTTP_FORWARDED_FOR')`获取代理服务器IP。

用户登录日志操作示例

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

php

如何用PHP实现获取用户IP地址并记录登录信息?

// 连接数据库$db=new mysqli('localhost', 'username', 'password', 'database');

// 插入登录日志$query=INSERT INTO login_logs (user_id, login_time, ip_address) VALUES (?, ?, ?);$stmt=$db->prepare($query);$stmt->bind_param('iss', $user_id, $login_time, $ip_address);$stmt->execute();?>

推荐使用第二种方法获取IP地址,因为它可以避免代理服务器的影响。同时,建议使用预处理语句插入日志,以确保数据库的安全性。

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

希望本文所述对大家PHP程序设计有所帮助。

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

如何用PHP实现获取用户IP地址并记录登录信息?

本文介绍了PHP实现获取IP地址的5种方法,并展示了如何插入用户登录日志操作。以下为具体内容:

PHP获取IP地址的5种方法

1. 使用`$_SERVER['REMOTE_ADDR']`获取原始IP地址。

2.使用`getenv('HTTP_CLIENT_IP')`获取客户端IP。

3.使用`getenv('HTTP_X_FORWARDED_FOR')`获取代理服务器IP。

4.使用`getenv('HTTP_X_FORWARDED')`获取代理服务器IP。

5.使用`getenv('HTTP_FORWARDED_FOR')`获取代理服务器IP。

用户登录日志操作示例

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

php

如何用PHP实现获取用户IP地址并记录登录信息?

// 连接数据库$db=new mysqli('localhost', 'username', 'password', 'database');

// 插入登录日志$query=INSERT INTO login_logs (user_id, login_time, ip_address) VALUES (?, ?, ?);$stmt=$db->prepare($query);$stmt->bind_param('iss', $user_id, $login_time, $ip_address);$stmt->execute();?>

推荐使用第二种方法获取IP地址,因为它可以避免代理服务器的影响。同时,建议使用预处理语句插入日志,以确保数据库的安全性。

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

希望本文所述对大家PHP程序设计有所帮助。