getenv(php7.0以上版本不不能使用的问题)[通俗易懂]

getenv(php7.0以上版本不不能使用的问题)[通俗易懂]getenv(php7.0以上版本不不能使用的问题)

大家好,又见面了,我是你们的朋友全栈君。

php文档地址

The function 'getenv' does not work if your Server API is ASAPI (IIS).

So, try to don't use getenv('REMOTE_ADDR'), but $_SERVER["REMOTE_ADDR"].

博客查找的问题

解决方式

版本升级容易出现此问题

1,使用php7<=以下版本
2,通过$_SERVER[]替换使用

扩展:

function getIP() { 
    
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
    
$realip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { 
    
$realip = $_SERVER['HTTP_CLIENT_IP']; 
} else { 
    
$realip = $_SERVER['REMOTE_ADDR']; 
} 
return $realip; 
} 
一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

扩展地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105873.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 30个Python小游戏,上班摸鱼我能玩一天【内附源码】

    30个Python小游戏,上班摸鱼我能玩一天【内附源码】一、接金币(1分)普通难度:❤玩法介绍:吃金币,控制左右键,有手就行。源码分享importosimportcfgimportsysimportpygameimportrandomfrommodulesimport*”’游戏初始化”’definitGame():#初始化pygame,设置展示窗口pygame.init()screen=pygame.display.set_mode(cfg.SCREE…

    2022年6月7日
    51
  • 编译安装单机版Redis6

    编译安装单机版Redis6

    2021年5月15日
    94
  • 警察面试真题及答案_接口测试面试题及答案

    警察面试真题及答案_接口测试面试题及答案一、前言接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢?主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,无非就是这个项目点完了点那个项目,这就是为什么各行各业的只要手指能点得动的人都来转行软件测试了。面试的时候面试官希望你除了点点点,还能更深入一点的思考页面上看不到…

    2022年9月29日
    1
  • 关于SetCapture() 和 ReleaseCapture()的用法的个人理解[通俗易懂]

    关于SetCapture() 和 ReleaseCapture()的用法的个人理解[通俗易懂]1.函数功能:在当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内还是边界外。同一时刻只能有一个窗口捕获鼠标。2.失效条件: A.当鼠标在其他窗口按下;B.调用ReleaseCapture释放。3. SetCapture和ReleaseCapture必须成对出现通俗来讲,例如:一只羊被一根弹性的

    2022年5月3日
    70
  • dropdownlist控件的使用方法_redis通知机制

    dropdownlist控件的使用方法_redis通知机制假设:数据源控件GrdiView,无刷新UpdatePannel,友情提示UpdateProgress,分页下拉框DropDownList一般情况下:Gridview的分页有linkbutton或者button,这样要是想让UpdateProgress提示,很简单,先让GridView隐藏,然后给它加个OnClientClick就搞定!在DropDownList的oncha

    2022年9月11日
    0
  • go基于grpc构建微服务框架-结构化日志输出

    go基于grpc构建微服务框架-结构化日志输出

    2022年4月2日
    74

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号