学习
实践
活动
工具
TVP
写文章
专栏首页恩蓝脚本PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例

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
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://www.zalou.cn复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 记一次从源代码泄漏到后台获取webshell的过程

    在一次授权测试中对某网站进行测试时,marry大佬发现了一个网站的备份文件,里面有网站源代码和数据库备份等。根据网站信息和代码都可以发现该系统采用的是微擎cms...

    天钧
  • 新建 Microsoft Word 文档

    正如我们在第4章中所了解到的,大多数组织都会提供一个可访问Internet(或Intranet,如果在防火墙后面进行测试)的网站,以向匿名用户推销组织能力、联系...

    小老鼠
  • Web黑盒渗透思路之猜想

    场景:WEB后台爆破 后台爆破很多人都会选择最经典的模式,如字典爆破,挖掘未授权访问漏洞,挖掘验证码漏洞(未刷新,验证码识别)等方法。 猜想: 1、后台程序是采...

    FB客服
  • Web安全之跨站脚本攻击(XSS)

    跨站脚本攻击,英文全称是 Cross Site Script,本来缩写是CSS,但是为了和层叠样式表(Cascading Style Sheet,CSS)有所区...

    laixiangran
  • 一次简单的内网渗透靶场练习

    当开启general log为on时,所执行的sql语句都会出现在stu1.log文件中。那么,如果修改generallogfile的值,那么所执行的sql语句...

    HACK学习
  • 渗透测试面试问题合集

    b、端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心zang出血,mysql,ftp,ssh弱口令等。

    行云博客
  • 宝塔面板6.x版本前台存储xss+后台csrf组合拳getshell

    宝塔是近几年刚崛起的一款服务器面板,深受各大站长的喜欢,windows2003 windows2008windosws 2012系统,linux centos ...

    C4rpeDime
  • 腾讯高级前端工程师支招,云开发实现小程序打赏和提现|云开发实践

    微信打赏支付和红包提现,是日常高频功能,那么基于小程序云开发,如何实现小程序的打赏支付和红包提现呢?腾讯工程师给你支招。

    腾讯云开发TCB
  • 巧用自定义注解,一行代码搞定审计日志,你学会了吗?

    任何一个软件系统,都不可避免的会碰到【信息安全】这个词,尤其是对于刚入行的新手,比如我,我刚入行的时候,领导让我做一个数据报表导出功能,我就按照他的意思去做,至...

    Java极客技术
  • 渗透测试面试问题2019版,内含大量渗透技巧

    https://github.com/Mr-xn/BurpSuite-collections/blob/master/%E6%B8%97%E9%80%8F%E6...

    7089bAt@PowerLi
  • 内嵌日志服务控制台

    日志服务提供 日志服务控制台 内嵌到其他系统的能力,满足不需要登录腾讯云控制台即可查询分析日志的诉求。通过内嵌日志服务控制台页面,可以给用户带来以下方便:

    日志服务CLS小助手
  • 一名代码审计新手的实战经历与感悟

    blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简单到困难,逐步提升。因此我建议大家的审计流程为——DVWA——blueCMS——其他小...

    FB客服
  • ZZCMS v8.2 代码审计

    大家好,我是kn0sky,在此我将把我这一次进行的代码审计的发现与收获都记录分析分享一下,笔者初入代码审计不久,审计的方法也比较新手,本文有点倾向于面向代码基础...

    FB客服
  • Linux 应急响应更新

    在第一时间采取响应的措施,恢复业务到正常,调查安全事件发生的原因,避免同类事件发生,提供数字证据

    我爱吃瓜瓜
  • 一文带你网络安全 入门到入* [网络安全]

    笔记来源B站视频(知识区>野生技术协会) 黑客攻防 从入门到入yu【網絡安全】:https://www.bilibili.com/video/BV1E4411...

    天钧
  • 实战 | 记一次基础的内网Vulnstack靶机渗透一

    靶场地址与介绍:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

    HACK学习
  • 超牛逼!100 个开箱即用的 Shell 脚本,拿好了~

    shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行...

    民工哥

扫码关注腾讯云开发者

领取腾讯云代金券