首页 > 其他分享 >获取真实的ip

获取真实的ip

时间:2023-05-09 11:22:52浏览次数:31  
标签:真实 HTTP ip preg SERVER 获取 IP match

    /**
     * 获取真实IP
     * @return mixed
     */
    public static function getRealIp()
    {
        $ip = $_SERVER['REMOTE_ADDR'];
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
            foreach ($matches[0] AS $xip) {
                if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
                    $ip = $xip;
                    break;
                }
            }
        } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CF_CONNECTING_IP'])) {
            $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
        } elseif (isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_IP'])) {
            $ip = $_SERVER['HTTP_X_REAL_IP'];
        }
        return $ip;
    }

 

标签:真实,HTTP,ip,preg,SERVER,获取,IP,match
From: https://www.cnblogs.com/Abner3721/p/17384346.html

相关文章

  • C# 窗体控件ContextMenuStrip下拉项之间的分割线
    1.效果如图: 2.选中ContextMenuStrip控件,在Items属性中添加Separator 3. (其中第3,4步,通过上下箭头,摆置好你要分割的位置)原文链接......
  • 尝试安装包的时候遇到的这样的错误,然后我尝试更新pip发现几乎报了同样的错,如何解决?
    大家好,我是皮皮。一、前言前几天在Python白银群【黑白人生】问了一个Python基础的问题,这里拿出来给大家分享下。二、实现过程这里【ChatGPT】给出了一个思路,如下所示:开代理可能会影响Python库安装,原因如下:代理可能会阻止Python库的下载。如果代理服务器无法正确配置,......
  • TCP/IP网络模型
    在网络模型中有分为7层模型(OSI模型)和5层模型和TCP/IP模型OSI模型将应用层和表示层作为独立的两层,而TCP/IP模型将它们合并为一个应用层。两种对比来说,TCP/IP模型更符合实际开发应用应用层应用层是最上层的一层,也是在开发中接触到最多的,因为在开发中一般需要提供HTTP接口来......
  • ISIS-IPV6
    目录ISIS-IPV6的概述新增字段NLPIDTLV-ReachabilityTLV-INTERFACE小实验多拓扑概述TLV和实验实验ISIS-IPV6的概述ISIS-IPV6须知OSPFv3的RFC2740有80页,而ISIS的IPV6草案只有7页ISIS的报文因采用TLV的设计结构,因此扩展性很好为支持新的协议和特性,只需要扩展新的TLV或子TLVI......
  • 获取.Net程序集的PublicKeyToken
    C:\ProgramData\Microsoft\Windows\StartMenu\Programs\VisualStudio2022\VisualStudioToolsSN-TC:\Users\97627\.nuget\packages\system.data.sqlclient\4.8.5\ref\netcoreapp2.1\System.Data.SqlClient.dll#SN-TYou.dll   ......
  • 【五期邹昱夫】CCF-A(NeurIPS'19)Inverting gradients-how easy is it to break privacy
    "GeipingJ,BauermeisterH,DrögeH,etal.Invertinggradients-howeasyisittobreakprivacyinfederatedlearning?[J].AdvancesinNeuralInformationProcessingSystems,2020,33:16937-16947."  本文发现梯度的方向比其范数幅值携带了更加重要的信息,以......
  • 2023 SMU RoboCom-CAIP 选拔赛
    A.小斧头\(O(N^3)\)20points暴力枚举左右端点,然后暴力求区间最值#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintread(){...}int32_tmain(){intn=read(),res=0;vector<int>a(n),b(n);for(auto&i:a)i......
  • Java后端真实、靠谱、强大的面试题网站:面试梯
    ​ 本文分享一个给力的Java后端面试题网站:面试梯。网址:https://offer.skyofit.com这套题真实、高频、全面、有详细答案、保你稳过面试,让你成为offer收割机。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、分布式、SpringCloud......
  • 学习JavaScript数据结构与算法 第五章
    五,队列和双端队列我们已经学习了栈。队列和栈非常类似,但是使用了与后进先出不同的原则。双端队列是一种将栈的原则和队列的原则混合在一起的数据结构。5.1队列数据结构队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最......
  • 全景剖析阿里云容器网络数据链路(三)—— Terway ENIIP
    来源https://help.aliyun.com/practice_detail/602821本系列联合作者容器服务@谢石前言近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的......