Как то раз, у меня появилась необходимость выдавать разный контент для клиентов из разных сетей. И мы, с моим многоуважаемым другом набросали для этой цели вот такой небольшой скриптик на php. Области применения можете придумывать сами. :)
[ тут был кривой и нерабочий код.. :) ]
UPDATE:
И вот недавно выяснилось, что скрипт этот работает криво. Короче говоря, я немного поковырялся в нете, и нашёл более подходящий вариант, который я просто немного переделал:
$netlist = explode("\n", file_get_contents($_SERVER['DOCUMENT_ROOT'].'/networks.txt')); // для удобства, сети размещены в файле столбиком. function checkip($ip, $nets) { foreach($nets as $network) { if(!empty($network)){ $ip_arr = explode ( '/' , $network ); $network_long = ip2long ( $ip_arr [ 0 ]); $x = ip2long ( $ip_arr [ 1 ]); $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]); $ip_long = ip2long ( $ip ); if(($ip_long & $mask ) == ( $network_long & $mask )){ return 1; } } } }
и далее уже можно выполнять проверку, и редиректить клиентов туда, куда нужно, например, вот таким образом:
if(checkip($_SERVER['REMOTE_ADDR'], $netlist )){ header('location: http://int.site.com'.$_SERVER['REQUEST_URI']); } else { header('location: http://ext.site.com'.$_SERVER['REQUEST_URI']); }