• 获取客户端ip


     1 <?php
     2 namespace EoffcnUtil;
     3 class Network {
     4     /**
     5      * 获取ip
     6      * @return string
     7      */
     8     public static function getIP() {
     9         $ip = false;
    10         if (!empty ($_SERVER ["HTTP_CLIENT_IP"])) {
    11             $ip = $_SERVER ["HTTP_CLIENT_IP"];
    12         }
    13         if (!empty ($_SERVER ['HTTP_X_FORWARDED_FOR'])) {
    14             $ips = explode(", ", $_SERVER ['HTTP_X_FORWARDED_FOR']);
    15             if ($ip) {
    16                 array_unshift($ips, $ip);
    17                 $ip = FALSE;
    18             }
    19             for ($i = 0; $i < count($ips); $i++) {
    20                 if (!preg_match("/^(10|172.16|192.168)./i", $ips [$i])) {
    21                     $ip = $ips [$i];
    22                     break;
    23                 }
    24             }
    25         }
    26         return ($ip ? $ip : $_SERVER ['REMOTE_ADDR']);
    27     }
    28 
    29     /**
    30      * 获得当前的url
    31      * @return string
    32      */
    33     public static function getCurrentURL() {
    34         $scheme = 'http';
    35         if (self::usingHTTPS()) {
    36             $scheme .= 's';
    37         }
    38 
    39         return sprintf('%s://%s%s', $scheme, $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI']);
    40     }
    41 
    42     /**
    43      * 获得当前的域名
    44      * @return string
    45      */
    46     public static function getCurrentDomain() {
    47         return isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
    48     }
    49 
    50     /**
    51      * 是否使用https
    52      * @return bool
    53      */
    54     public static function usingHTTPS() {
    55         if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    56             return true;
    57         } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
    58             return true;
    59         }
    60         return false;
    61     }
    62 }
  • 相关阅读:
    ETL讲解(很详细!!!)
    必须掌握的30种SQL语句优化
    亿级Web系统搭建——单机到分布式集群
    运行第一个容器
    Docker 架构详解
    容器 What, Why, How
    Docker 组件如何协作?
    部署 DevStack
    通过例子学习 Keystone
    创建 Image
  • 原文地址:https://www.cnblogs.com/hellohell/p/9627538.html
Copyright © 2020-2023  润新知