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 ); |
14 | curl_setopt( $ch , CURLOPT_HEADER, 1); |
18 | $out = ob_get_contents(); |
然后是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" ]; |