(未整理....)

(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. CentOS minimal网络设置

    CentOS minimal版本默认不启动网络,所以要自己配置. 配置过程: 编辑配置文件: vi /etc/sysconfig/network-script/ifcfg-eth0 需要更改两项 NM ...

  2. canvas粒子效果-snow

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 一款经典的jQuery kxbdMarquee 无缝滚动插件

    <marquee> 曾是 IE 下独有的一个走马灯效果的标签,其他浏览器并不兼容,于是出现了使用 JavaScript 来模拟该效果的插件. 版本: jQuery v1.3.2+ 在线实例 ...

  4. Restive.js – 轻松让网站变成响应式和自适应

    Restive.js 是一个 jQuery 插件,可以帮助您轻松快捷地添加响应式功能到你网站,适应几乎所有拥有 Web 功能的设备.使用设备检测,高级管理断点,以及方向管理的组合,Restive.js ...

  5. 高端大气上档次!10个精美的国外HTML5网站欣赏

    这篇文章挑选了10个高端大气上档次的 HTML5 网站分享给大家.作为下一代网页语言,HTML5 加入中众多的语义化标签,例如 video.audio.section.article.header.f ...

  6. 【HTML5】浅析HTML5应用程序缓存(ApplicationCache)

    一.为什么需要Web应用程序缓存 在移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得降低,比如坐在火车上,过了一个隧道(15分钟),便无法访问网站,这对于web的伤害是很大的    ...

  7. CSS尺寸单位 % px em rem 详解

    在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位.相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位.字体相对单位有:em.ex.ch.rem:视窗相对单位有:vw.vh.v ...

  8. JavaScript学习笔记-正则表达式(RegExp对象)

    正则表达式(RegExp对象)   1.正则表达式字面量,在脚本加载后编译.若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译: 2.使用构造函数创建的RegExp,提供了 ...

  9. iOS加密之MD5加密

    话不多说,上代码! MyMD5.h里面 #import <Foundation/Foundation.h> @interface MyMD5 : NSObject { } +(NSStri ...

  10. Sharepoint 2010 工作流启动时处理出错

    在Sharepoint 2010 中使用Sharepoint 2010 designer做了一个工作流: 运行工作流时,当主办工程师是“张三”的时候,工作流一启动就报错. -------------- ...