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基础知识,了解如何编写PHP脚本,使用PHP函数和类库,以及如何与数据库进行交互。 【压缩包子文件的文件名称列表】中的"132687644120090130"可能是项目的某个主文件或者日志文件名。由于...
这个实例提供了一个专门用于生成国内IP段的随机IP地址的PHP函数——`get_rand_ip()`。...此外,了解如何从Web服务器获取客户端IP地址,以及如何进行IP地址的验证和解析,也是PHP网络编程中的重要知识点。
当我们谈论PHP的socket编程时,我们实际上是在讨论如何利用PHP与远程或本地服务器进行低级别的网络通信。Socket编程允许开发者直接操作TCP/IP协议栈,实现更灵活、高效的网络应用程序,如聊天应用、游戏服务器、数据...
1. **获取客户端IP地址**:这是统计在线人数的基础,通过`getenv('REMOTE_ADDR')`函数可以轻松获取访问者的IP地址。此外,文章还将简要介绍其他获取IP地址的方法。 2. **保存在线用户信息**:在线用户的IP地址和...
1. **服务器端脚本**:PHP代码在服务器上执行,然后将结果以HTML形式发送给客户端浏览器。 2. **跨平台性**:PHP可在多种操作系统上运行,如Windows、Linux、macOS等。 3. **易学易用**:PHP语法简洁,学习曲线相对...
最后,在Windows客户端上,通过浏览器访问服务器的IP地址,如`http://192.168.1.x/index.php`,如果一切配置无误,客户端应该能看到如图8所示的测试结果,即显示PHP脚本的输出。 总结来说,LAMP环境的搭建包括安装...
在服务端,PHP代码通常会处理与数据库交互,获取需要推送给Android设备的消息,然后通过MQTT库(如PECL/mqtt或Mosquitto PHP client)将这些消息发布到指定的主题。 3. **Android端源码**: ...
// 取得 MySQL 客户端信息 } } /****************************************************************** -- 函数名:query($sql) -- 作 用:数据库执行语句,可执行查询添加修改删除等任何sql语句 -- 参 数:...
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 ...
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 ...
7. **安全措施**:为了提高安全性,类可能包含了防止Session Hijacking(会话劫持)和Session Fixation的策略,例如定期更新Session ID,检查IP地址或User Agent变化等。 8. **自定义存储机制**:除了标准的文件...
在这个脚本中,我们定义了一个`parse_request`函数来解析来自PHP客户端的Redis命令请求,并根据请求内容进一步处理。这里仅展示了部分代码,实际实现还需要完成命令解析逻辑。 #### 总结 通过上述配置和脚本实现,...
- **User-Agent检查**:最常用的方法是通过服务器端或客户端JavaScript检测请求头中的`User-Agent`字段。`User-Agent`包含了浏览器和操作系统的信息,可以根据其特征判断是否来自手机。例如,许多手机浏览器会在`...
【描述】中提到的phpws是一个PHP编写的socket通信类库,它允许开发者用PHP来实现客户端和服务器之间的低级别数据传输。Socket编程是网络编程的基础,通过创建socket,应用程序可以发送和接收来自网络的数据。phpws库...
Socket编程在PHP中是一种基础但强大的网络通信手段,它能够实现进程间的网络通信,如客户端与服务器之间的数据交换。对于PHP开发者来说,掌握如何使用Socket接口是非常重要的技能,因为这可以用来创建高性能的Web...
这种机制常见于企业级应用或对安全性要求较高的网站,通过绑定管理员的固定IP,确保只有授权的管理员才能进行管理操作。 “请使用 安全登陆客户端 文件夹中的客户端进行登陆。”这句话指出,网站可能提供了一个专用...
2. **监听与接受连接**:调用`socket()`函数创建套接字,`bind()`函数绑定到指定的IP地址和端口,`listen()`函数设置最大连接队列长度,最后`accept()`函数接受来自客户端的连接请求。 3. **处理HTTP请求**:接收...