discuz中获取ip的函数



  private function _get_client_ip() {

        $ip = $_SERVER[‘REMOTE_ADDR‘];

        if (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_X_FORWARDED_FOR‘]) AND 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;

                }

            }

        }

        return $ip;

    }

但是通过 HTTP_X_FORWARDED_FOR 获取代理IP的方法有风险,客户端可以伪造:http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html

时间: 2024-11-08 13:14:38

discuz中获取ip的函数的相关文章

C++ 中获取 可变形参函数中的参数

#include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * str, ...) { va_list ap; // 定义参数列表变量 va_start(ap, str); // 确定参数位置,表明从 str 开始获取参数 // 开始获取参数 var_arg(ap, 数据类型) 返回获取的值 cout<<va_arg(ap, int)<<endl; c

在C#中获取如PHP函数time()一样的时间戳

原文:在C#中获取如PHP函数time()一样的时间戳 c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差. 此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字.dotnet下用DateTime.Now.Ticks能够得到精确的时间,单位是10^-7s. 经过实验,发现 long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60; tb

在cmd中获取ip地址和主机名

将下面的文件放到一个bat文件当中,以管理员身份运行. @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% s

php 获取 ip 地址 函数:

php 获取 ip 地址 函数:function getIP () //取IP函数 { global $_SERVER; if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip =

15.从zabbix数据库中获取ip列表

我把监控作为中心节点,所以所有IP地址都从zabbix中提取. 从zabbix数据库中提取IP,有两种方法: (1)直接模糊查询hosts表: 比如查询运维部门的ip:select host from hosts where name like "op%" order by host; 完整代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import MySQLdb reload(sys) sys.setde

.NET中获取IP地址

在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其它好的方法,可以回复一起整理: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostName 获取客户端电脑IP:Page.Request.UserHostAddress 2. 在网络编程中的通用方法: 获取当前电脑名:static System.Net.

mysql中获取时间的函数

今天做项目,有一个获取七天前日期的数据的一个需求.然后就百度mysql中关于时间的函数.收集了一些.现记录如下: 参考地址:http://www.w3school.com.cn/sql/sql_dates.asp -- 获取当前时间SELECT NOW() SELECT CURDATE()SELECT CURRENT_DATE()SELECT CURRENT_TIME()SELECT CURRENT_TIMESTAMP()SELECT CURTIME() -- DATE_SUB() 函数从日期减

封装的获取IP的函数

1 /** 2 * 获取IP 3 * strcasecmp 比较函数 4 */ 5 if (!function_exists('get_ip')) { 6 7 function get_ip($outType = 'int') { 8 if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 9 $onlineip = getenv('HTTP_CLIENT_IP'); 10 } e

php中获取ip地址

function GetIP(){ if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){   $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif(!empty($_SERVER["HTTP_CLIENT_IP"])){  $cip = $_SERVER["HTTP_CLIENT_IP"]; } elseif(!empty($_SERVER[&