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

下面我会详细讲解如何实现获取PHP地址的五种方法,并提供插入用户登录日志的操作示例。

获取IP地址的五种方法

1. 使用 $_SERVER['REMOTE_ADDR'] 方法

这是 PHP 内置的函数,可以直接获取用户的 IP 地址,代码如下:

$ip = $_SERVER['REMOTE_ADDR'];

2. 通过 HTTP 头中的 X-Forwarded-For

对于一些经过代理服务器的请求,可能用户的真实 IP 地址已经被伪造了,这时我们需要通过 HTTP 头中的 X-Forwarded-For 来获取真实的用户 IP 地址。代码如下:

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

这里需要注意,由于 HTTP_X_FORWARDED_FORHTTP_CLIENT_IP 这两个头信息是可以伪造的,所以我们需要做一些数据验证。

3. 使用第三方 IP 地址查询 API

除了以上两种方式,我们还可以通过调用第三方 API 获取用户 IP 地址信息。代码如下:

$ip = ''; // 获取用户 IP 地址
$url = 'http://api.ipstack.com/' . $ip . '?access_key=' . $access_key;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);

$location = json_decode($output, true);
$ip = $location['ip'];

其中 $access_key 是我们注册第三方 API 时获得的访问密钥。

4. 使用 DNS 解析服务器主机名

通过使用 gethostbyname 函数,来直接解析域名得到 IP 地址。代码如下:

$ip = gethostbyname('www.example.com');

5. PHP-fpm通过fastcgi_param传递

在PHP-fpm环境下,可以通过在nginx的conf文件中的 fastcgi_param 传递环境变量 REMOTE_ADDR ,代码如下:

location ~ \.(php|html|htm)$ {
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param REMOTE_ADDR $remote_addr;
    include fastcgi_params;
}

插入用户登录日志操作示例

对于网站而言,用户登录日志是非常重要的,可以在出现问题时方便查错。下面是一个基本的插入登录日志的例子:

session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (check_login($username, $password)) {
        $_SESSION['username'] = $username;

        // 插入登录日志
        $ip = get_client_ip();
        $time = time();
        $sql = "INSERT INTO login_log (username, login_time, login_ip) VALUES ('$username', '$time', '$ip')";
        insert($sql);

        header('Location: index.php');
        exit();
    } else {
        echo '用户名或密码错误';
    }
}

其中, get_client_ip() 函数为获取用户 IP 地址的函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP简单系统查询模块代码打包下载

    PHP简单系统查询模块代码打包下载的攻略包含以下几个步骤: 步骤1:创建查询模块代码 首先,需要创建一个查询模块的PHP代码文件。可以使用任何的开发工具,例如Notepad++, Sublime Text, Eclipse等等来进行代码编写。 以Notepad++为例,创建一个新文件,并将以下代码复制到文件中: <?php // 定义连接MySQL数据…

    PHP 2023年5月30日
    00
  • PHP字符串中插入子字符串方法总结 原创

    PHP字符串中插入子字符串方法总结 在PHP中,对于字符串的处理非常广泛,常见的字符串操作之一就是插入子字符串操作。 本篇文章将重点介绍PHP字符串中插入子字符串的方法总结,包括使用PHP内置函数和正则表达式等多种方法。 方法一:PHP内置函数 方法一.1:substr_replace() substr_replace()是PHP内置函数,用于插入子字符串到…

    PHP 2023年5月26日
    00
  • php使用PDO方法详解

    标题:PHP使用PDO方法详解 一、什么是PDO PDO(PHP Data Objects)是 PHP 5 引入的一个访问数据库的标准 API,它使用面向对象的方式访问各种数据库。PDO 提供了一组公共的接口给各种数据库使用,包括 Oracle、MySQL、SQLite 等等。 二、PDO的优势 相比于原来的 MySQL 函数库,PDO 有以下的几个优势: …

    PHP 2023年5月26日
    00
  • PHP Web木马扫描器代码分享

    相信大家都知道木马是一种恶意程序,主要是为了以自身为基点、截存远程主机上有用的信息和控制资源的合法访问,设计的一种针对计算机的攻击程序。那么如何进行木马扫描呢?这里我介绍一种PHP Web木马扫描器的代码分享,下面是具体的攻略。 一、PHP Web木马扫描器基本说明 PHP Web木马扫描器其实是一个编写在PHP语言上的扫描工具,可以扫描制定目录下的所有文件…

    PHP 2023年5月23日
    00
  • PHP二分查找算法示例【递归与非递归方法】

    PHP二分查找算法是一种高效的查找算法,适用于已经排好序的数据集。本文将详细讲解二分查找算法的递归和非递归两种实现方式,并提供两个示例。 一、递归法实现 分析二分查找算法的工作原理:将待查找集合分成两个部分,如果中间元素等于待查找元素,则查找成功,否则比较中间元素与待查找元素,并把待查找元素对应的一半作为下一轮查找的集合。反复执行此过程直到查找到所需元素或者…

    PHP 2023年5月26日
    00
  • 怎么预估2020高考理科数学分数? 2020高考分数预估攻略

    怎么预估2020高考理科数学分数?2020高考分数预估攻略 背景 2020年高考结束后,许多考生都希望能够了解自己的考试成绩,进而预估自己能否进入心仪的大学专业。而针对这一需求,我们可以通过一些方法来对高考数学成绩进行预估,以便给考生在填报志愿时提供更为准确的参考。 方法 1. 通过历年分数线进行预估 我们可以通过查看历年高考分数线,来对我们的数学成绩进行预…

    PHP 2023年5月26日
    00
  • PHP聊天室简单实现方法详解

    PHP聊天室是一种常见的网页聊天系统,可以让用户通过网页进行实时交流和聊天。下面将详细讲解该聊天室的实现方法。 简介 这个聊天室的实现方法基于PHP和MySQL。用户需要登录才能参与聊天,登录后可以发送和接收聊天消息;管理员可以指定聊天室主题和禁止某些用户发送消息。 实现步骤 创建数据库 首先需要创建一个MySQL数据库,并创建用户表和消息表。用户表中需要包…

    PHP 2023年5月23日
    00
  • 基于PHP实现原生增删改查的示例代码

    下面是详细的攻略: 基于PHP实现原生增删改查的示例代码 环境准备 PHP环境:需要安装PHP5.6及以上版本 数据库: 利用MySQL数据库来实现增删改查示例 数据库操作 连接数据库 在PHP里,连接MySQL数据库需要用到mysqli扩展。下面是连接MySQL示例代码: $db_host = ‘localhost’; $db_username = ‘ro…

    PHP 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部