Categories


Tags


使用CDN后,获取真实IP办法 (127.0.0.1)

虚拟主机登录会员或登录后台管理,一般都会获取用户客户端地址并记录数据库.但相同程序部署我司虚拟主机后,获取客户端地址不是用户真实ip地址或为 "127.0.0.1",可以通过以下方式修改获取客户ip地址部分代码解决.

Supesite使用CDN后获取真实IP 办法

include/main.inc.php文件,这部分

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

$_SGLOBAL['onlineip'] = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {

$_SGLOBAL['onlineip'] = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {

$_SGLOBAL['onlineip'] = getenv('REMOTE_ADDR');

} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {

$_SGLOBAL['onlineip'] = $_SERVER['REMOTE_ADDR'];

}

替换成

function get_real_ip()

{

$ip=false;

if(!empty($_SERVER["HTTP_CLIENT_IP"]))

{

$ip = $_SERVER["HTTP_CLIENT_IP"];

}

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))

{

$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

if ($ip)

{

array_unshift($ips, $ip); $ip = FALSE;

}

for ($i = 0; $i < count($ips); $i++)

{

if(!preg_match("/^(10|172\.16|192\.168)\./", $ $ips[$i])){

$ip = $ips[$i];

break;

}

}

}

return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);

}

$_SGLOBAL['onlineip'] = get_real_ip();

Discuz!使用CDN后获取真实IP办法

nclude/common.inc.php

找到如下代码:

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

$onlineip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {

$onlineip = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {

$onlineip = getenv('REMOTE_ADDR');

} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {

$onlineip = $_SERVER['REMOTE_ADDR'];

}

替换为:

function get_real_ip()

{

$ip=false;

if(!empty($_SERVER["HTTP_CLIENT_IP"]))

{

$ip = $_SERVER["HTTP_CLIENT_IP"];

}

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))

{

$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

if ($ip)

{

array_unshift($ips, $ip); $ip = FALSE;

}

for ($i = 0; $i < count($ips); $i++)

{

if(!preg_match("/^(10|172\.16|192\.168)\./", $ $ips[$i]))

{

$ip = $ips[$i];

break;

}

}

}

return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);

}

$onlineip = get_real_ip();

帝国cms后台记录的ip日志和用户注册记录的ip

\e\class\connect.php搜索function egetip()函数中的获取ip代码修改成以上部分

DZ注册用户IP和邀请码拥有者IP相同的解决办法

方法A:

register.php 200行

showmessage('register_invite_iperror');

改为

//showmessage('register_invite_iperror');

方法B:

在include/common.inc.php文件中把

代码:

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

$onlineip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {

$onlineip = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {

$onlineip = getenv('REMOTE_ADDR');

} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {

$onlineip = $_SERVER['REMOTE_ADDR'];

}

替换成:

代码:

$onlineip=getenv('HTTP_X_FORWARD_FOR');

--------------------

做了CDN的ASP网站如何取到用户真实IP程序

function   checkip(checkstring)'用正则判断IP是否合法

dim   re1

set   re1=new   RegExp

re1.pattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"

re1.global=false

re1.Ignorecase=false

checkip=re1.test(checkstring)

set   re1=nothing

end   function

function   get_cli_ip()'取真实IP函数,先 HTTP_CLIENT_IP 再 HTTP_X_FORWARDED_FOR 再 REMOTE_ADDR

dim client_ip

if checkip(Request.ServerVariables("HTTP_CLIENT_IP"))=true then

get_cli_ip = checkip(Request.ServerVariables("HTTP_CLIENT_IP"))

else

MyArray = split(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")

if ubound(MyArray)>=0 then

client_ip = trim(MyArray(0))

if checkip(client_ip)=true then

get_cli_ip = client_ip

exit function

end if

end if

get_cli_ip = Request.ServerVariables("REMOTE_ADDR")

end if

end   function

ASP.NET获取IP的6种方法

服务端:

//方法一

HttpContext.Current.Request.UserHostAddress;

//方法二

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

//方法三

string strHostName = System.Net.Dns.GetHostName();

string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

//方法四(无视代理)

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

客户端:

//方法五

var ip = '<!--#echo var="REMOTE_ADDR"-->';

alert("Your IP address is "+ip);

//方法六(无视代理)

function GetLocalIPAddress()

{

var obj = null;

var rslt = "";

try

{

obj = new ActiveXObject("rcbdyctl.Setting");

rslt = obj.GetIPAddress;

obj = null;

}

catch(e)

{

//

}

return rslt;

}

来自印度的MCT Maulik Patel提供了一种服务端的解决方案,很好:

if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy

{

ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.

}

else// not using proxy or can't get the Client IP

{

ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.

}

备注:

1. 有些代理是不会发给我们真实IP地址的

2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP

net的也可以参考http://www.cdnunion.com/articleinfo.php?pid=158设置

来源:西部数码


Public @ 2018-03-30 15:26:11

教你七招,轻松挑选出一款优秀的网站空间

做为一个网站的站长说。最头疼的就是找一个好的空间来放自己的网站。看着别人的网站运行如飞,而自己的网站却慢如蜗牛,站长们的心理不知做何感想。而现在的空间租用一般都提供了免费试用,下面我将从几个方面来讲诉如何在试用期间测试出自己的空间到底能有多大的能力来承载我们的网站。一:网站反应能力用网络上的网站速度测试软件来进行网站测试。二:用一些ASP指针来探测你的空间支持哪些东西。现在大部分都在使用阿江ASP

Public @ 2018-07-04 16:00:50

网站成功关键之二:标题与内容

在网站的成功关键之二:标题与内容中,关键是确保标题能够吸引用户的眼球,并同时与内容相关联。以下是一些关于标题与内容的注意事项: 1. 引人入胜的标题:一个优秀的标题应该是有吸引力的,能够引起用户的兴趣,让他们想要点击进入网页。标题应该简洁明了、清晰明确,能够准确传达出该网页的主题和内容。 2. 关键词优化:在标题中使用关键词可以提高网页在搜索引擎中的排名,增加网站的曝光度。但是,关键词的使用要

Public @ 2023-07-23 15:50:44

CDN怎么使用?你真的会用网站的CDN吗?省钱攻略!

作为一名AI语言模型,我并不具备实际操作CDN的能力,但是从理论上说,使用CDN的一般步骤是: 1.选择CDN服务提供商并注册账号。 2.在CDN服务提供商的管理界面中添加需要加速的网站。 3.根据CDN服务提供商提供的配置指南,在网站服务端和客户端分别进行相应的配置。 4.根据需要调整CDN缓存的时间、区域等设置。 5.在网站上发布内容后,通过访问CDN服务提供商的管理界面查看CDN缓存是否生

Public @ 2023-04-19 02:00:20

什么是CDN?使用CDN为什么会出现网站抓取异常

CDN(Content Delivery Network)是一种分布式的网络架构,通过在全球多个地点分布节点服务器来加速网站内容的传输和访问速度,减轻源服务器的负荷,提高网站的可靠性和可用性。 使用CDN的网站抓取异常可能出现的原因包括: 1. CDN节点的更新和同步可能存在延迟,导致某些链接无法访问或访问速度慢。 2. CDN节点之间的数据同步可能存在不稳定性,导致数据不一致或缺失。 3.

Public @ 2023-04-20 08:00:06

更多您感兴趣的搜索

0.592358s