使用PHP获取访客IP的方法

很多时候,我们需要获取访客 IP 才能去实现一些功能。举个最简单的例子如天气预报,通常先要获取访客的 IP,然后根据访客的 IP 地址去搜索 IP 库得出访客所在地区,最后把访客坐在地区的天气情况给显示。

或者分站功能的网站也通常需要获取访客 IP,然后去搜索 IP 库得知访客所在地后自动切换到相应线路相应的站点。如一些大的分类信息网站几乎都这么实现,如赶集,五八等等。下面贴出的这个方法,可以获取访客的 IP 地址。

function GetIP(){ 
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
$ip = getenv("REMOTE_ADDR"); 
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
$ip = $_SERVER['REMOTE_ADDR']; 
else
$ip = "unknow"; 
return($ip); 
}

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:使用PHP获取访客IP的方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

Bugly 多渠道热更新解决方案

Gradle使用productFlavors打渠道包的痛 有很多同学可能会采用配置productFlavors来打渠道包,主要是它是原生支持,方便开发者输出不...

4253
来自专栏镁客网

将缓存数据率提升50%,MIT、Intel的研究人员还让宽带利用率提高5倍 | 黑科技

1580
来自专栏Android-JessYan

改造 Android 官方架构组件 ViewModel

原文地址: http://www.jianshu.com/p/963a9d146da7

1091
来自专栏C/C++基础

计算机硬件结构概述

学习编程语言,首先需要需要了解计算机硬件组成结构,因为编程语言编写的程序,最终需要在计算机中运行。计算机与程序间属共生关系,二者相互依存,互利共赢,没有程序,计...

1012
来自专栏PingCAP的专栏

TiDB 2.0 RC1 Release

2018 年 3 月 9 日,TiDB 发布 2.0 RC1 版。该版本在上一版的基础上,对 MySQL 兼容性、系统稳定性和优化器做了很多改进。

41614
来自专栏刁寿钧的专栏

10 分钟梳理关系数据库基础知识(二):存储结构

本文是《十分钟入门关系型数据库》系列技术文章的第二篇,,主要介绍了数据库的存储结构。

7260
来自专栏程序员与猫

计算机组成原理之机器

1.1 计算机系统概论 1.1 计算机系统简介 把感应器嵌入和装备到电网,铁路,桥梁等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物联网”与现代计算...

1969
来自专栏Java学习网

网页开发之目前流行的五大浏览器内核介绍

浏览器的内核是分为两个部分的,一是渲染引擎,另一个是JS引擎。现在JS引擎比较独立,内核更加倾向于说渲染引擎。

2443
来自专栏Android 开发者

架构组件之 ViewModel | 中文教学视频

2403
来自专栏PingCAP的专栏

使用 Rust 构建分布式 Key-Value Store

构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,本文将以我们开发的分布式 Key-Value TiKV 作为实际例...

6751

扫码关注云+社区

领取腾讯云代金券