getenv()

获得客户端IP

getenv -- Gets the value of an environment variable, string getenv ( string varname ), Returns the value of the environment variable varname, or FALSE on an error.

1
<?php
2
  // Example use of getenv()
3
  $ip = getenv(‘REMOTE_ADDR‘);
4
  // Or simply use a Superglobal ($_SERVER or $_ENV)
5
  $ip = $_SERVER[‘REMOTE_ADDR‘];
6
?>
这是在PHP官方的manual提供的方法。

但是当Web服务器API是ASAPI (IIS)的时候,getenv函数是不起作用的。这种情况下你如果用getenv来取得用户客户端ip的话,得到的将是错误的ip地址。

因此更为安全和准确的方法是尽量避免使用getenv函数。比如可以用以下的函数来获取ip信息:

程序代码

view sourceprint?
01
<?php
02
    function GetIP(){
03
        if (getenv("HTTP_CLIENT_IP")
04
            && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
05
           $ip = getenv("HTTP_CLIENT_IP");
06
        else if (getenv("HTTP_X_FORWARDED_FOR")
07
            && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
08
           $ip = getenv("HTTP_X_FORWARDED_FOR");
09
        else if (getenv("REMOTE_ADDR")
10
            && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
11
           $ip = getenv("REMOTE_ADDR");
12
        else if (isset($_SERVER[‘REMOTE_ADDR‘])
13
            && $_SERVER[‘REMOTE_ADDR‘]
14
            && strcasecmp($_SERVER[‘REMOTE_ADDR‘], "unknown"))
15
           $ip = $_SERVER[‘REMOTE_ADDR‘];
16
        else
17
           $ip = "unknown";
18
        return($ip);
19
    }
20
    $ip = GetIP();
21
    echo $ip;
22
?>
时间: 2024-10-11 01:36:50

getenv()的相关文章

java中System.getenv和System.getProperties的区别

System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦. System.getProperties获取的是系统的相关属性.在java api文档中已经列出了如下属性 如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=zhuhui 这样我们就在系统属性中设置了名称为myname值为zhuhui的系统属性,那么就可以通过System.getProperty("name&quo

java中的System.getProperty()和getenv()方法

Java system.getproperty(String name)获取系统属性 属性说明: public class test{ public static void main(String[] args) { System.out.println("Java Runtime Environment version = " + System.getProperty("java.version")); System.out.println("Java

PHP中getenv函数

在PHP中getenv(参数)函数是一个用于获取环境变量的函数,根据提供不同的参数可以获取不同的环境变量,具体如下: “PHP_SELF” 当前正在执行脚本的文件名,与document root 相关.举例来说,在URL 地址为[url]http://example.com/test.php/foo.bar[/url] 的脚本中使用$_SERVER['PHP_SELF'] 将会得到/test.php/foo.bar 这个结果.__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名. 如

环境变量篇getenv putenv setenv

getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdlib.h> 定义函数 char * getenv(const char *name); 函数说明 getenv()用来取得参数name环境变量的内容.参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针.环境变量的格式为name=value. 返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL. 范例 #include<

PHP中getenv()和$_SERVER的区别

PHP中getenv()和$_SERVER的用法区别: getenv 取得系统的环境变量,环境变量的格式为name=value. 语法: string getenv(string varname); 返回值: 字符串 函数种类: PHP 系统功能 内容说明 若正确取得环境变量 varname,则返回变量值,失败则返回 false. 下例可以取得用户浏览器所在机器的网址 <?php $ip = getenv(“REMOTE_ADDR”); ?> $_SERVER是服务器超级全局变量数组 用$_S

getenv, _wgetenv

Description The C library function char *getenv(const char *name) searches for the environment string pointed to by name and returns the associated value to the string. Declaration Following is the declaration for getenv() function. char *getenv(cons

getopt getenv setenv用法

getopt()用法详解:http://blog.csdn.net/kunikida/article/details/8922754 getenv.setenv函数 获取和设置系统环境变量:http://www.cnblogs.com/lidabo/archive/2012/08/24/2654295.html

2通过程序获得环境变量,getenv(),setenv()函数和unsetenv()函数,env查看环境变量,echo输出指定的环境变量

 1进程环境 libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明.例如: 运行结果: 2.env命令可以查看进程信息 3.echo $环境变量名  得出环境变量的值 4getenv() A依赖头文件 #include<stdlib.h> B函数声明 char *getenv(constchar *name); 用environ指针可以查看所有环境变量字符串,但是不够方便,如果给出name要在环境变量表中查找它对应的v

getenv()函数

在PHP中getenv(参数)函数是一个用于获取环境变量的函数,根据提供不同的参数可以获取不同的环境变量,具体如下: “PHP_SELF” 当前正在执行脚本的文件名,与document root 相关. 如果PHP 以命令行方式运行,该变量在PHP 4.3.0 之前无效. “argv” 传递给该脚本的参数.当脚本运行在命令行方式时,argv 变量传递给程序C 语言样式的命令行参数.当调用GET 方法时,该变量包含请求的数据. “argc” 包含传递给程序的命令行参数的个数(如果运行在命令行模式)

进程环境详解(四)---getenv、putenv和setenv函数详解

在Linux中的c程序的典型内存分布中,之前提到的有 text段.data段.bss段.堆和栈这几部分,在笔记“麦子学院c语言->典型c语言程序的c内存分布”中介绍了.但是其实一个c语言进程的内存分布中不止是有这些区域,还有命令行参数.环境变量以及共享库和mmap映射区等区域.如下图所示 ------------------------------ 环境变量区域 命令行参数 栈 共享库和mmap映射区 堆 bss段 data段 text段 ----------------------------