`

php常用函数——获取服务器或客户端ip

    博客分类:
  • PHP
PHP 
阅读更多
function GetIP(){
    if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"];
    else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"];
    else $cip = "";
    preg_match("/[\d\.]{7,15}/", $cip, $cips);
    $cip = $cips[0] ? $cips[0] : 'unknown';
    unset($cips);
    return $cip;
}

客户端IP相关的变量
1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。

2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。

3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。

服务器端IP相关的变量
1. $SERVER_NAME,需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。

2. $HTTP_SERVER_VARS["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。

3. $_SERVER['LOCAL_ADDR'] 、$HTTP_SERVER_VARS['LOCAL_ADDR'],测试中,未获得任何结果(测试环境PHP5)。

完整的获得IP类
/**
 * Get Client/Server IP 
 * 
 * @author  Yaron (http://yaron.org.cn)
 * @version  0.1
 * @package  
 */
 
class getIP{
 function clientIP(){
  $cIP = getenv('REMOTE_ADDR');
  $cIP1 = getenv('HTTP_X_FORWARDED_FOR');
  $cIP2 = getenv('HTTP_CLIENT_IP');
  $cIP1 ? $cIP = $cIP1 : null;
  $cIP2 ? $cIP = $cIP2 : null;
  return $cIP;
 }
 function serverIP(){
  return gethostbyname($_SERVER_NAME);
 }
}
 
$getIP  = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
 
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';

分享到:
评论

相关推荐

    PHP实例开发源码——Mars_Qvod资源采集爬虫程序 php版.zip

    这意味着开发者需要具备PHP基础知识,了解如何编写PHP脚本,使用PHP函数和类库,以及如何与数据库进行交互。 【压缩包子文件的文件名称列表】中的"132687644120090130"可能是项目的某个主文件或者日志文件名。由于...

    PHP实现的随机IP函数【国内IP段】

    这个实例提供了一个专门用于生成国内IP段的随机IP地址的PHP函数——`get_rand_ip()`。...此外,了解如何从Web服务器获取客户端IP地址,以及如何进行IP地址的验证和解析,也是PHP网络编程中的重要知识点。

    简单的php —— socket 编程

    当我们谈论PHP的socket编程时,我们实际上是在讨论如何利用PHP与远程或本地服务器进行低级别的网络通信。Socket编程允许开发者直接操作TCP/IP协议栈,实现更灵活、高效的网络应用程序,如聊天应用、游戏服务器、数据...

    PHP的基本应用-MVC

    1. **获取客户端IP地址**:这是统计在线人数的基础,通过`getenv('REMOTE_ADDR')`函数可以轻松获取访问者的IP地址。此外,文章还将简要介绍其他获取IP地址的方法。 2. **保存在线用户信息**:在线用户的IP地址和...

    PHP实例开发源码——CNStats PHP 简繁中文版.zip

    1. **服务器端脚本**:PHP代码在服务器上执行,然后将结果以HTML形式发送给客户端浏览器。 2. **跨平台性**:PHP可在多种操作系统上运行,如Windows、Linux、macOS等。 3. **易学易用**:PHP语法简洁,学习曲线相对...

    Linux下——LAMP环境的搭建

    最后,在Windows客户端上,通过浏览器访问服务器的IP地址,如`http://192.168.1.x/index.php`,如果一切配置无误,客户端应该能看到如图8所示的测试结果,即显示PHP脚本的输出。 总结来说,LAMP环境的搭建包括安装...

    安卓Android源码——基于MQTT的安卓消息推送php服务端源码+安卓端源码.rar

    在服务端,PHP代码通常会处理与数据库交互,获取需要推送给Android设备的消息,然后通过MQTT库(如PECL/mqtt或Mosquitto PHP client)将这些消息发布到指定的主题。 3. **Android端源码**: ...

    [php]mysql数据库操作——DB类

    // 取得 MySQL 客户端信息 } } /****************************************************************** -- 函数名:query($sql) -- 作 用:数据库执行语句,可执行查询添加修改删除等任何sql语句 -- 参 数:...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    1.3 IIS+PHP+MySQL——独立搭建PHP 开发环境 14 实例008 安装PHP 14 实例009 安装MySQL 15 实例010 安装IIS 21 实例011 第3个PHP程序 23 1.4 LAMP——独立配置PHP开发环境 24 实例012 安装Apache服务器 24 实例013 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    1.3 IIS+PHP+MySQL——独立搭建PHP 开发环境 14 实例008 安装PHP 14 实例009 安装MySQL 15 实例010 安装IIS 21 实例011 第3个PHP程序 23 1.4 LAMP——独立配置PHP开发环境 24 实例012 安装Apache服务器 24 实例013 ...

    php session操作类

    7. **安全措施**:为了提高安全性,类可能包含了防止Session Hijacking(会话劫持)和Session Fixation的策略,例如定期更新Session ID,检查IP地址或User Agent变化等。 8. **自定义存储机制**:除了标准的文件...

    史上最LOW的PHP连接池解决方案.docx

    在这个脚本中,我们定义了一个`parse_request`函数来解析来自PHP客户端的Redis命令请求,并根据请求内容进一步处理。这里仅展示了部分代码,实际实现还需要完成命令解析逻辑。 #### 总结 通过上述配置和脚本实现,...

    如何限制电脑PC端访问Web页面只能手机端才能访问

    - **User-Agent检查**:最常用的方法是通过服务器端或客户端JavaScript检测请求头中的`User-Agent`字段。`User-Agent`包含了浏览器和操作系统的信息,可以根据其特征判断是否来自手机。例如,许多手机浏览器会在`...

    up_1232420_phpws_cw412.rar

    【描述】中提到的phpws是一个PHP编写的socket通信类库,它允许开发者用PHP来实现客户端和服务器之间的低级别数据传输。Socket编程是网络编程的基础,通过创建socket,应用程序可以发送和接收来自网络的数据。phpws库...

    up_368022_phpws_4bezq6.rar

    Socket编程在PHP中是一种基础但强大的网络通信手段,它能够实现进程间的网络通信,如客户端与服务器之间的数据交换。对于PHP开发者来说,掌握如何使用Socket接口是非常重要的技能,因为这可以用来创建高性能的Web...

    完整网站代码!

    这种机制常见于企业级应用或对安全性要求较高的网站,通过绑定管理员的固定IP,确保只有授权的管理员才能进行管理操作。 “请使用 安全登陆客户端 文件夹中的客户端进行登陆。”这句话指出,网站可能提供了一个专用...

    webserver:简单的web服务器

    2. **监听与接受连接**:调用`socket()`函数创建套接字,`bind()`函数绑定到指定的IP地址和端口,`listen()`函数设置最大连接队列长度,最后`accept()`函数接受来自客户端的连接请求。 3. **处理HTTP请求**:接收...

Global site tag (gtag.js) - Google Analytics