php cli方式下获取服务器ip
-
(未整理....)
(1)php cli方式下获取服务器ip
[php]
function getServerIp(){
$ss = exec('/sbin/ifconfig eth0 | sed -n \'s/^ *.*addr:\\([0-9.]\\{7,\\}\\) .*$/\\1/p\'',$arr);
$ret = $arr[0];
return $ret;
}function getServerIp(){
$ss = exec('/sbin/ifconfig eth0 | sed -n \'s/^ *.*addr:\\([0-9.]\\{7,\\}\\) .*$/\\1/p\'',$arr);
$ret = $arr[0];
return $ret;
}(2)php cgi方式下 获取 客户端ip和服务器端ip
[php]
[php]
PHP获取客户端和服务器IP地址的函数写法如下:
[code=Php width=600px]/**
* 获取客户端IP地址
* @return string
*/
function get_client_ip() {
if(getenv('HTTP_CLIENT_IP')){
$client_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
} else {
$client_ip = $_SERVER['REMOTE_ADDR'];
}
return $client_ip;
}
/**
* 获取服务器端IP地址
* @return string
*/
function get_server_ip() {
if (isset($_SERVER)) {
if($_SERVER['SERVER_ADDR']) {
$server_ip = $_SERVER['SERVER_ADDR'];
} else {
$server_ip = $_SERVER['LOCAL_ADDR'];
}
} else {
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
[/code]
客户端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类
[code=Php width=600px]01./**
02. * Get Client/Server IP
03. *
04. * @author Yaron (http://yaron.org.cn)
05. * @version 0.1
06. * @package
07. */
08.
09.class getIP{
10. function clientIP(){
11. $cIP = getenv ( 'REMOTE_ADDR' );
12. $cIP1 = getenv ( 'HTTP_X_FORWARDED_FOR' );
13. $cIP2 = getenv ( 'HTTP_CLIENT_IP' );
14. $cIP1 ? $cIP = $cIP1 : null;
15. $cIP2 ? $cIP = $cIP2 : null;
16. return $cIP ;
17. }
18. function serverIP(){
19. return gethostbyname ( $_SERVER_NAME );
20. }
21.}
22.
23.$getIP = new getIP();
24.$clientIp = getIP::clientIP();
25.$serverIp = getIP::serverIP();
26.
27.echo 'Client IP is ' , $clientIp , '<br />' ;
28.echo 'Server IP is ' , $serverIp , '<br />' ;PHP获取客户端和服务器IP地址的函数写法如下:
[code=Php width=600px]/**
* 获取客户端IP地址
* @return string
*/
function get_client_ip() {
if(getenv('HTTP_CLIENT_IP')){
$client_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
} else {
$client_ip = $_SERVER['REMOTE_ADDR'];
}
return $client_ip;
}
/**
* 获取服务器端IP地址
* @return string
*/
function get_server_ip() {
if (isset($_SERVER)) {
if($_SERVER['SERVER_ADDR']) {
$server_ip = $_SERVER['SERVER_ADDR'];
} else {
$server_ip = $_SERVER['LOCAL_ADDR'];
}
} else {
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
[/code]
客户端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类
[code=Php width=600px]01./**
02. * Get Client/Server IP
03. *
04. * @author Yaron (http://yaron.org.cn)
05. * @version 0.1
06. * @package
07. */
08.
09.class getIP{
10. function clientIP(){
11. $cIP = getenv ( 'REMOTE_ADDR' );
12. $cIP1 = getenv ( 'HTTP_X_FORWARDED_FOR' );
13. $cIP2 = getenv ( 'HTTP_CLIENT_IP' );
14. $cIP1 ? $cIP = $cIP1 : null;
15. $cIP2 ? $cIP = $cIP2 : null;
16. return $cIP ;
17. }
18. function serverIP(){
19. return gethostbyname ( $_SERVER_NAME );
20. }
21.}
22.
23.$getIP = new getIP();
24.$clientIp = getIP::clientIP();
25.$serverIp = getIP::serverIP();
26.
27.echo 'Client IP is ' , $clientIp , '<br />' ;
28.echo 'Server IP is ' , $serverIp , '<br />' ;
php cli方式下获取服务器ip的更多相关文章
- php在cli和cgi方式下获取服务器ip的实例
php cli方式下获取服务器ip php内核没有提供这样的命令,需要借助linux中的命令ifconfig来实现,如下两个函数代码: function getServerIp(){ ...
- java获取服务器IP地址及MAC地址的方法
这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下 本文实例讲述了 ...
- php脚本时 linux命令获取服务器IP
exec("netstat -anp | grep smtp",$sendList); //php脚本获取服务器邮件进程数 exec("netstat -anp |g ...
- C# 之 获取服务器IP,客户端IP以及其它
1.获取客户端IP:Request.ServerVariables.Get("Remote_Addr").ToString(); 2.获取客户端主机名:Request.Server ...
- 面试题目: 获取服务器IP和客户端IP
[面试题目] 怎么获取服务器IP和客户端IP地址? I. PHP获取客户端IP, 可通过下面系统变量 1. $_SERVER['Remote_Addr'] 2. $_SERVER['HTTP_CLIE ...
- CDN 环境下获取用户IP方法
CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...
- 获取服务器IP,客户端IP
客户端IP相关的变量 1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP. 2. $_SERVER['HTTP_CLIENT_IP']; 代理 ...
- C#中获取服务器IP,客户端IP以及网卡物理地址
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVaria ...
随机推荐
- [mysql] 查看mysql执行时间
mysql的 profiling不是默认打开的 查看profiling是否找开 mysql> show variables like "%pro%"; +---------- ...
- rabbitmq connection/channel/consumer/queue的数量关系详细分析
最近,MQ经常有丢包的现象,看各connection/channel/consumer/queue的组成情况,发现差别比较大. channel与消费者: [root@iZ23nn1p4mjZ bin] ...
- java多线程-线程创建
Java 线程类也是一个 object 类,它的实例都继承自 java.lang.Thread 或其子类. 可以用如下方式用 java 中创建一个线程,执行该线程可以调用该线程的 start()方法: ...
- LazyCode 自己开源的一个类库
LazyCode 是什么? LazyCode 一个懒人用的代码类库,包括的模块:网络请求,数据存储,UIKit ,Foundation的一些类目 PHNetWorkClient 功能 1:发送GET ...
- 学习angular.js的一些笔记想法(上)
1.data-ng-app与ng-app的区别 data-ng-app是为了h5不报错 2.ng-class 不多说就来拿例子说吧 html代码 <div class='color-change ...
- Javascript实现的2048
HTML代码如下 <!DOCTYPE html> <html> <head> <title></title> <meta charse ...
- HTML5拖拽实例
最近应该会用到,借用一下......小妹儿,你又变懒了 拖拽相关属性 draggable属性是html5的全局属性,是html5支持拖放操作的方式之一,用来表示元素是否可以被拖放,draggable有 ...
- ArcSDE安装注意事项
今天因为测试需要配置环境,因此在本机上安装了ArcSDE 9.3 for Oracle11g,但是发现安装完之后服务(esri_sde)出现了启动后又立马停止的问题,解决方法如下: 1)检查Oracl ...
- UIButton的titleEdgeInsets属性和imageEdgeInsets属性实现图片文字按要求排列
button可以设置 titleEdgeInsets属性和 imageEdgeInsets属性来调整其image和label相对位置,具体参考http://stackoverflow.com/ques ...
- PULL解析XML的运行机制详解
PULL解析简单易上手,基本上看一遍,基本上就会解析啦,但总是感觉对PULL解析的运行机制不是很了解,就总结了以下事件驱动到底是怎么执行的.. PULL: Android内置了PULL解析器.PULL ...