PHP中getenv()和$_SERVER的用法区别:

getenv 取得系统的环境变量,环境变量的格式为name=value。

语法: string getenv(string varname);

返回值: 字符串 函数种类: PHP 系统功能

内容说明

若正确取得环境变量 varname,则返回变量值,失败则返回 false。

下例可以取得用户浏览器所在机器的网址

<?php

$ip = getenv(“REMOTE_ADDR”);

?>

$_SERVER是服务器超级全局变量数组 用$_SERVER['REMOTE_ADDR']同样可以获取到客户端的IP地址。

二者的区别在于,getenv不支持IIS的isapi方式运行的PHP。


【转】解决PHP获取不到ip地址`函数getenv(“REMOTE_ADDR”)与$_SERVER['REMOTE_ADDR']的区别

最近用PHP帮朋友写了个用于投票的页面,一切都很顺利,装上后发现:访客IP地址没能记录上(没能成功获取IP地址),怪事,当初本地测试都好的呀。难不成本地和服务器有别,马上开个空间,测试,仍然一切正常。再一个个问题都排除后,了解到对方是windows下的iis,而自己测试都在apache上,很可能是这个原因。

马上更换函数:将原来的ip地址获取函数”getenv(“REMOTE_ADDR”)“更换为”$_SERVER['REMOTE_ADDR']“,覆盖更新,再看数据库,ip地址已经成功记录,搞定。

既然再次遇到这问题,就还是记录下吧:PHP中获取访客(客户端)的ip地址函数getenv(“REMOTE_ADDR”) 与$_SERVER['REMOTE_ADDR']的区别,其实,通过这件事,已经很清楚了。getenv(“REMOTE_ADDR”)函数在 apache下能正常获取ip地址,而在iis中,一点作用都没,而$_SERVER['REMOTE_ADDR']函数,既可在apache中成功获取 访客的ip地址,在iis下也同样有效。

摘自:http://wanglianghuaihua.blog.163.com/blog/static/54251531201091211275342/

PHP中getenv()和$_SERVER的区别的更多相关文章

  1. 【转】为什么我们都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  2. Visual Studio 中 Build 和 Rebuild 的区别

    因为之前写的程序比较小,编译起来比较快,所以一直都没有太在意 Build 和 Rebuild 之间的区别,后来发现两个还是有很大不同. Build 只针对在上次编译之后更改过的文件进行编译,在项目比较 ...

  3. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...

  4. java集合中List与set的区别

       java集合中List与set的区别.     List可以存储元素为有序性并且元素可以相同.     set存储元素为无序性并且元素不可以相同.     下面贴几段代码感受一下: ArrayL ...

  5. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  6. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  7. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

  8. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  9. 【jQuery】【转】jQuery中的trigger和triggerHandler区别

    trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...

随机推荐

  1. 制作自动化系统安装U盘

    1.挂载CentOS6.6镜像 [root@test88 ~]# mkdir /application/tools -p [root@test88 ~]# cd /application/tools/ ...

  2. CSS初步了解

    CSS 概述 个人理解为对html的扩展,对html关键字进行功能添加. CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表 ...

  3. python_线程、进程和协程

    线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python #coding=utf-8 __author__ = 'yinjia' i ...

  4. POJ 1511 Invitation Cards(Dijkstra(优先队列)+SPFA(邻接表优化))

    题目链接:http://poj.org/problem?id=1511 题目大意:给你n个点,m条边(1<=n<=m<=1e6),每条边长度不超过1e9.问你从起点到各个点以及从各个 ...

  5. Flyweight模式(亨元模式)

    这应该算是最好理解的一个设计模式了吧·················· 面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个 ...

  6. 读书笔记|Windows 调试原理学习|持续更新

    关于调试方面的学习笔记,主要来源于<软件调试>的读书笔记和梦织未来论坛的视频教程 1.调试器使用一个死循环监听调试信息. DebugActiveProcess(PID);while(TRU ...

  7. MVC公开课 – 1.基础 (2013-3-15广州传智MVC公开课)

    1.MVC设计模式 Model 是指 要处理的业务代码和数据操作代码 View 视图 主要是指的 跟用户打交道 并能够展示数据 Controller 看成是 Model和View的桥梁 优点: 1.1 ...

  8. fedora下中文输入fcitx4.0

    fedora12,14下使用fcitx输入法可用,切换ctrl+space

  9. bzoj 4518

    4518 思路: 斜率优化: 代码: #include <cstdio> #include <cstring> #include <iostream> #inclu ...

  10. HTK训练错误消息意义

    在HTK训练线上数据的时候,遇到了ERROR [+6550] LoadHTKLabels: Junk at end of HTK transcription,这个问题,网上查阅是说有空行,结果根本没有 ...