« OpenSSH Pre-Authentication CRC32 DoS | Main | 批量设置 IP 的 shell 代码 »
October 9, 2006
处理 X-Forwarded-For 的 php 代码
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。 https://windtear.net/archives/2006/10/09/001109.html http://windtear.net/archives/2006/10/09/001109.html 处理 X-Forwarded-For 的 php 代码 处理 X-Forwarded-For 的 php 示意代码如下 (其他细节处理略) $r = $_SERVER['REMOTE_ADDR']; $x = $_SERVER['HTTP_X_FORWARDED_FOR']; if($r=="unknown") { $x = explode(',', $x); for ($i=0;$i<count($x);$i++) { $x[$i]=trim($x[$i]); if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $x[$i])) { $r=$x[$i]; break; } } } 关于IP判断的优化调整: 判断 ip 格式的 php 程序代码 http://windtear.net/archives/2006/06/17/001008.html function is_ip($str) { //if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) return 1; //else return 0; $ip = explode(".", $str); if (count($ip)<4 || count($ip)>4) return 0; foreach($ip as $ip_addr) { if ( !is_numeric($ip_addr) ) return 0; if ( $ip_addr<0 || $ip_addr>255 ) return 0; } return (preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/is", $str)); } |
Posted by windtear at October 9, 2006 2:01 PM