
您好,XXXXXXX系列IP,而这个函数获取的是局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP。如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。
下面提供一个函数:<php
// 定义一个函数getIP()
function getIP(){global $ip;
if (getenv(">
Supesite使用CDN后获取真实IP 办法
include/mainincphp文件,这部分
if(getenv('>
如果仅仅是想知道本机的IP地址,就直接用
string IP = RequestUserHostAddress;
这样就行了。
或者用 方法调用 :
public static string getIP(>
要获取IP地址,首先必须得到机器的主机名(host
name),调用gethostname就可以实现,有了主机名,接下来调用gethostbyname来获取包括IP地址在内的更多的主机信息。gethostbyname返回一个指向hostent数据结构的指针,这个结构在<winsockh>文件中是这样定义的:
//
来自winsockh
struct
hostent
{
char
FAR
h_name;
/
正式的主机名/
char
FAR
FAR
h_aliases;
/
别名列表/
short
h_addrtype;
/
主机地址类型/
short
h_length;
/
地址长度/
};
这是个典型的底层APIs使用的数据结构,很多人都不是很熟悉它。实际上,hostent是一个变长的数据结构,h_name是主机名,在例子程序中的值为
"zxnhangwiresdb"。没有别名(h_aliases)。h_addrtype是地址类型(或者也叫地址家族),在例子程序中的值为2(AF_INET
=
internet,其它内容参见winsockh)。h_length是每一个地址的长度,以字节为单位。因为IP地址的长度是4个字节,所以在例子程序中的值为4,h_addr_list是地址数组的开始点,它们一个接着一个存放,结尾是一个null。每一个xyzw数字占一个字节。为了将IP地址格式化为xyzw的形式,必须将地址数组先拷贝到一个叫sockaddr的数据结构中,然后调用一个特殊的函数inet_ntoa。
图二是hostent
结构在内存中存放示意图:
图二hostent
结构在内存中的存放示意图
相信以上的解释再辅以阅读代码,你以后不再会对hostent结构感到陌生。
最后,顺祝编程愉快!
以上就是关于如何获取客户端真实IP全部的内容,包括:如何获取客户端真实IP、如何获取伪装ip下的真实ip地址、如何绕过用CDN的域名 获取真实IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)