curl虽然功能强大,但是只能伪造$_SERVER["HTTP_X_FORWARDED_FOR"],对于大多数IP地址检测程序来说,$_SERVER["REMOTE_ADDR"]很难被伪造:
首先是client.php的代码
01 | $headers['CLIENT-IP'] = '202.103.229.40'; |
02 | $headers['X-FORWARDED-FOR'] = '202.103.229.40'; |
05 | foreach( $headers as $n => $v ) { |
06 | $headerArr[] = $n .':' . $v; |
12 | curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr ); //构造IP |
14 | curl_setopt( $ch, CURLOPT_HEADER, 1); |
18 | $out = ob_get_contents(); |
</div> </div>
然后是server.php
02 | if(!emptyempty($_SERVER["HTTP_CLIENT_IP"])) |
03 | $cip = $_SERVER["HTTP_CLIENT_IP"]; |
04 | else if(!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"])) |
05 | $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; |
06 | else if(!emptyempty($_SERVER["REMOTE_ADDR"])) |
07 | $cip = $_SERVER["REMOTE_ADDR"]; |
12 | echo "<br>访问IP: ".GetIP()."<br>"; |
13 | echo "<br>访问来路: ".$_SERVER["HTTP_REFERER"]; |
</div> </div>