Common::getClientIp PHP Method

getClientIp() public static method

获取客户端IP
public static getClientIp ( )
    public static function getClientIp()
    {
        if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
            $ip = getenv('HTTP_CLIENT_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
            $ip = getenv('REMOTE_ADDR');
        } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
            $ip = $_SERVER['REMOTE_ADDR'];
        } else {
            $ip = 'unknown';
        }
        return $ip;
    }

Usage Example

Exemplo n.º 1
0
 /**
  * 发起一个腾讯API请求
  * @param $command 接口名称 如:t/add
  * @param $params 接口参数  array('content'=>'test');
  * @param $method 请求方式 POST|GET
  * @param $multi 图片信息
  * @return string
  */
 public static function api($command, $params = array(), $method = 'GET', $multi = false)
 {
     if (isset($_SESSION['t_access_token'])) {
         //OAuth 2.0 方式
         //鉴权参数
         $params['access_token'] = $_SESSION['t_access_token'];
         $params['oauth_consumer_key'] = OAuth::$client_id;
         $params['openid'] = $_SESSION['t_openid'];
         $params['oauth_version'] = '2.a';
         $params['clientip'] = Common::getClientIp();
         $params['scope'] = 'all';
         $params['appfrom'] = 'php-sdk2.0beta';
         $params['seqid'] = time();
         $params['serverip'] = $_SERVER['SERVER_ADDR'];
         $url = self::$apiUrlHttps . trim($command, '/');
     } elseif (isset($_SESSION['t_openid']) && isset($_SESSION['t_openkey'])) {
         //openid & openkey方式
         $params['appid'] = OAuth::$client_id;
         $params['openid'] = $_SESSION['t_openid'];
         $params['openkey'] = $_SESSION['t_openkey'];
         $params['clientip'] = Common::getClientIp();
         $params['reqtime'] = time();
         $params['wbversion'] = '1';
         $params['pf'] = 'php-sdk2.0beta';
         $url = self::$apiUrlHttp . trim($command, '/');
         //生成签名
         $urls = @parse_url($url);
         $sig = SnsSign::makeSig($method, $urls['path'], $params, OAuth::$client_secret . '&');
         $params['sig'] = $sig;
     }
     //请求接口
     $r = TencentHttp::request($url, $params, $method, $multi);
     $r = preg_replace('/[^\\x20-\\xff]*/', '', $r);
     //清除不可见字符
     $r = iconv('utf-8', 'utf-8//ignore', $r);
     //UTF-8转码
     //调试信息
     if (self::$debug) {
         echo '<pre>';
         echo '接口:' . $url;
         echo '<br>请求参数:<br>';
         print_r($params);
         echo '返回结果:' . $r;
         echo '</pre>';
     }
     return $r;
 }