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实现的数组和XML文件相互转换功能示例

    下面我将为您详细讲解如何使用PHP实现数组和XML文件的相互转换。 一、数组转XML文件 示例代码 <?php //定义一个数组,包含多个键值对 $data = array( array("title" => "Jogging and Running", "description" =&…

    PHP 2023年5月26日
    00
  • php中创建字符串的变量实例讲解

    下面就是关于“Php中创建字符串的变量实例讲解”的完整攻略,包含了以下几个方面的内容: 字符串的定义和表示方式 创建字符串变量的常见方法 对字符串进行操作的示例说明 1. 字符串的定义和表示方式 在Php中,字符串是一种常见的数据类型,在程序中用来存储文本类型的数据。字符串的定义可以用单引号或双引号来表示,例如: $str1 = ‘这是一个单引号字符串’; …

    PHP 2023年5月26日
    00
  • PHP 实现代码复用的一个方法 traits新特性

    下面我将详细讲解“PHP 实现代码复用的一个方法 traits新特性”的完整攻略。 什么是 Traits 在 PHP 5.4 后,引入了新特性 Traits。它为 PHP 引入了一种代码重用的方法,尤其是解决了单继承的局限性。Traits 可以看作是一个可复用的代码块集合,可以通过在类中引用 Traits,来实现代码的复用。 Traits 的使用方法 Tra…

    PHP 2023年5月23日
    00
  • 完善版手游导航源码app软件 APP手机软件 应用商城下载类网站布局规整

    demo软件园每日更新资源,请看到最后就能获取你想要的:   1.完善版手游导航源码app软件 APP手机软件 应用商城下载类网站布局规整,利于用户体验 浏览网站看到一款带后台的app软件手游类源码,后台功能强大,界面美观,适用于app软件,手机软件下载,手游类导航网, 其他行业也可以把数据删掉,添加自己的就行了,布局规整,利于用户体验,手工书写DIV+CS…

    PHP 2023年4月17日
    00
  • 比较好用的PHP防注入漏洞过滤函数代码

    请您详细阅读以下攻略,完整讲解“比较好用的PHP防注入漏洞过滤函数代码”的过程。 什么是SQL注入漏洞? SQL注入是一种常见的网络攻击技术,通过在Web应用程序的输入框或URL中注入恶意的SQL语句,来获取或损坏应用程序中的敏感信息。SQL注入漏洞的出现,往往是因为Web应用程序的输入校验不够严格或者过滤不到位。 如何防范SQL注入漏洞? 防范SQL注入漏…

    PHP 2023年5月30日
    00
  • PHP后台实现微信小程序登录

    下面就对”PHP后台实现微信小程序登录”进行详细讲解。 一、前置知识 在开始之前,需要对以下知识点进行了解: 微信小程序开发流程 微信开放平台账号注册和开发者认证 PHP基础知识 二、获取微信小程序登录凭证 小程序登录流程中,首先需要通过微信小程序接口获取登录凭证(code)。 我们需要在小程序端调用微信提供的wx.login()函数,该函数返回用户登录凭证…

    PHP 2023年5月23日
    00
  • 五个PHP程序员工具

    以下是“五个PHP程序员工具”的完整攻略: 1. Composer: 简介: Composer 是 PHP 的依赖管理工具。它允许你在你的项目中声明一个依赖库,然后它会自动为你管理(安装/升级)这些库和其它的必要库。 如何安装: 官网中有详细的安装指南,可按照指南进行安装:https://getcomposer.org/download/ 如何使用: 通过命…

    PHP 2023年5月23日
    00
  • PHP中header函数的用法及其注意事项详解

    具体来讲解一下“PHP中header函数的用法及其注意事项详解”的攻略流程。 什么是header函数 首先,header函数是PHP内置的一种函数,主要用于向客户端发送HTTP头部信息。利用header函数,可以设置网页的状态码、网页编码、缓存、cookie等相关信息,在页面加载过程中起到非常重要的作用。 header函数的基本用法 header函数的基本语…

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