《PHP编程:PHP实现的限制IP投票程序IP来源分析》要点:
本文介绍了PHP编程:PHP实现的限制IP投票程序IP来源分析,希望对您有用。如果有疑问,可以联系我们。
PHP实战本文实例分析了PHP实现的限制IP投票程序.分享给大家供大家参考,具体如下:
PHP实战接到一个投票活动的需求,需要做IP限制,每个IP限制一定的投票机会.我在搜索引擎上搜索了关键词:PHP客户端IP ,结果基本上都是以下内容:
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'];
}
PHP实战这段代码在使用广泛的 《discuz》论坛软件,以及众多开放源代码的PHP软件里都会有使用到,大致思路是获取最终的客户端IP地址(能获得使用代理拜访的用户的IP地址).
PHP实战由于很多成熟的程序都使用了这段代码获取客户端IP地址,所以我也就放心的运用在了程序里,好在后来有同事提醒,发现这段代码不能用在限制IP的投票程序里,因为 HTTP_X_FORWARDED_FOR这个是可以伪造的,只要在哀求头里增加 X-Forwarded-For .在服务器端的 $_SERVER[‘HTTP_X_FORWARDED_FOR'] 接收到的就是这个哀求头的内容.
PHP实战下面我用程序说明一下:
PHP实战http://localhost/i.php 内容是通过上面的代码获取IP地址,并打印出来.
PHP实战编写构造哀求的代吗,哀求这个URL:其中在哀求头里增加了X-Forwarded-For这个参数:
PHP实战
$head = array();
$head[] = 'GET /i.php HTTP/1.1';
$head[] = 'Host: localhost';
$head[] = 'X-Forwarded-For: 255.255.255.255' ;
$head[] = 'Connection: Close' ;
$head = join("rn",$head) ;
$head .= "rnrn";
$fp = fsockopen('localhost', 80);
fwrite($fp, $head);
$response = array() ;
while($buff = fread($fp, 4096)){
$response[] = $buff;
}
print join('',$response) ;
PHP实战执行这段代码,可以得知,服务器端(localhost/i.php) 打印了 255.255.255.255 .
说明了这种获取客户端IP的办法在限制IP的投票活动里是不可取的,客户端的IP地址可用伪造.而直接使用 $_SERVER['REMOTE_ADDR'] 虽然获取到的不是用户的最终IP地址,但是限制的功能是直接有效的达到了.
PHP实战当然,也不能说那段代码是错误的.在一些对IP不做限制的需求里,应该使用,比如,在一些有很多地域性子网站的网站,通过用户拜访的IP,直接跳转到该用户所在区域的子网站等.
PHP实战更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《php socket用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
PHP实战希望本文所述对大家PHP程序设计有所赞助.
维易PHP培训学院每天发布《PHP编程:PHP实现的限制IP投票程序IP来源分析》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/6799.html