PHP 使用 GD 库动态生成显示 IP 地址的 GIF 图片

Nora
Nora
发布时间:2026-10-14| 6人浏览过
原创

利用 PHP GD 库可以动态生成包含 IP 地址的图片。该方法通过判断 HTTP 头信息获取用户 IP,并在内存中绘制白色背景的 GIF 图像,最终输出给浏览器。

结果与原理

此方法的核心在于使用 GD 扩展在服务器端实时创建图像资源。不同于静态 HTML 页面直接显示文本,这种方式将 IP 地址编码为图形数据流(MIME类型为 image/gif),适合需要防止简单爬取或特定样式展示的场景。

准备条件

  1. PHP 环境:确保服务器已启用并编译了 gd 扩展。可通过 phpinfo() 确认。
  2. 文件设置:脚本文件的 MIME 类型必须强制声明为图像格式,否则浏览器可能无法正确渲染。

第1步:初始化图像画布与颜色

目的:建立绘图区域并定义背景色。 动作:使用 header("Content-type: image/gif") 通知浏览器接收的是图像数据。调用 imagecreate(130, 15) 创建指定宽高的调色板图像。随后用 ImageColorAllocate 分配白色作为背景底色,对应 RGB (255, 255, 255)。

第2步:获取客户端真实 IP 地址

目的:兼容不同网络环境下的 IP 标识,特别是经过 Nginx、CDN 或负载均衡器的请求。 动作:按优先级读取 Server 变量。 首先检查 $_SERVER['HTTP_CLIENT_IP'],若存在则视为客户端原始 IP; 其次检查 $_SERVER['HTTP_X_FORWARDED_FOR'],用于处理多层代理场景; 最后回退到 $_SERVER['REMOTE_ADDR'],这是最可靠的 TCP 连接来源 IP。

复制代码
<?php
header("Content-type: image/gif");

// 1. 创建 130x15 像素的图像
$im = imagecreate(130, 15);

// 2. 设置白色背景
$background_color = ImageColorAllocate($im, 255, 255, 255);

// 3. 获取 IP 地址
if(isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

// 4. 设置文字颜色 (深蓝色)
$text_color = imagecolorallocate($im, 0, 51, 102);

// 5. 绘制字符串
// 参数说明: 图像资源, 字体大小(1-5), X偏移, Y偏移, 内容, 颜色
imagestring($im, 3, 5, 1, $ip, $text_color);

// 6. 输出 GIF 并释放资源
imagegif($im);
imagedestroy($im);
?>

第3步:绘制文字并输出

目的:将获取到的 IP 字符串渲染到画布上并发送给客户端。 动作:使用 imagecolorallocate($im, 0, 51, 102) 指定文字颜色。调用 imagestring 函数,其中字体大小设为 3(中间档位),坐标 (5, 1) 控制文字位置,避免贴边。最后通过 imagegif($im) 输出图像流,并用 imagedestroy($im) 销毁内存中的图像对象以防泄漏。

完成判断

当你在浏览器访问该 .php 文件时,如果屏幕中央出现一个白底蓝字的矩形条,且显示的文本正是你的当前公网或局域网 IP 地址,即表示成功。右键点击图片可查看图片属性,其 Content-Type 应显示为 image/gif。

简要总结

上述就是利用 PHP GD 库实现图形化显示 IP 地址的详细内容。该方案虽然基础,但清晰展示了图像生成流程及 IP 获取的最佳实践。更多关于 PHP 图像处理与安全防护的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。