(未整理....)

(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的更多相关文章

  1. php在cli和cgi方式下获取服务器ip的实例

    php cli方式下获取服务器ip php内核没有提供这样的命令,需要借助linux中的命令ifconfig来实现,如下两个函数代码: function getServerIp(){          ...

  2. java获取服务器IP地址及MAC地址的方法

    这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下   本文实例讲述了 ...

  3. php脚本时 linux命令获取服务器IP

    exec("netstat -anp | grep smtp",$sendList);   //php脚本获取服务器邮件进程数 exec("netstat -anp |g ...

  4. C# 之 获取服务器IP,客户端IP以及其它

    1.获取客户端IP:Request.ServerVariables.Get("Remote_Addr").ToString(); 2.获取客户端主机名:Request.Server ...

  5. 面试题目: 获取服务器IP和客户端IP

    [面试题目] 怎么获取服务器IP和客户端IP地址? I. PHP获取客户端IP, 可通过下面系统变量 1. $_SERVER['Remote_Addr'] 2. $_SERVER['HTTP_CLIE ...

  6. CDN 环境下获取用户IP方法

    CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...

  7. 获取服务器IP,客户端IP

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

  8. C#中获取服务器IP,客户端IP以及网卡物理地址

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...

  9. c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString();  客户端主机名: Request.ServerVaria ...

随机推荐

  1. php中opendir函数用法实例

    这篇文章主要介绍了php中opendir函数用法,以实例形式详细讲述了opendir函数打开目录的用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了php中opendi ...

  2. Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)

    注:本文中的recreate是指当内存不足时,Activity被回收,但再次来到此Activity时,系统重新恢复的过程.例如:当Activity A到Activity B时,如果内存不足,A被回收, ...

  3. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...

  4. Node.js包

     1.app.js 2.m_p包下package.json 3.index.js  入口模块

  5. js的一些属性

    js attribute(): setAttribute():element.setAttribute(name,balue) getAttribute():element.getAttribute( ...

  6. ENVI【遥感图像预处理之图像的几何校正】

    ---恢复内容开始--- 一.图像几何校正的概述 1.几何校正方法: 1)利用卫星自带的地理定位文件进行几何校正.主菜单>>>Map>>Georeference传感器的名 ...

  7. ZOOM - 简单易用的 jQuery 照片相册插件

    jQuery 最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些让人惊叹的图片切换效果.ZOOM 是一款全屏效果的 jQuery 图片切换展示插件,支持键盘前后按键切换,支持 ...

  8. sizzle源码分析 (2)ID 类 tag querySelectorAll 快速匹配

    不是所有的选择器都需要去分词,生成相应的匹配函数,这样流程比较复杂,当浏览器具备原生的方法去匹配元素是,没有理由不优先匹配,下面看看进入Sizzle后,它是怎么优先匹配这些元素的: function ...

  9. jQuery原型方法first,last,eq,slice源码分析

    这4个方法中前3个方法很常用大家都见过,但是slice方法可能会以为是数组方法,其实slice也是jQuery的一个原型方法,只不过是底层方法是为其他方法服务的(更具体点是为eq方法服务的),首先还是 ...

  10. select中无法使用click的处理

    今天工作用到了select,想要给option添加click点击事件,可是却没有任何效果,百度了才发现,原来竟然是不支持呀! 众所周知(其实我才知道哎),在IE里, select的option是不支持 ...