PDA

Просмотр полной версии : Редирект по Ip


InfernoNet
20.05.2008, 23:06
У меня есть сайт и он доступен в локальной сети и в глобальной сети.
Нужен скрипт, который будет перенаправлять пользователей из локальной сети (192.168.* и 10.*) на одну страницу, а пользователей из интернета на другую страницу.
Так как прописывать все Ip инетовские не возможно, то можно написать скрипт, чтоб Ip адреса с диапазаном 192.168.* и 10.* перенаправлялись на одну страницу, а все остальные Ip на другую.
Кому не сложно выложите скрипт.

blackybr
20.05.2008, 23:12
.htaccess ?


RewriteEngine on
RewriteCond %{REMOTE_HOST} 192\.168
RewriteRule \.php$ http://www.site.ru/ [R=301,L]

d_x
20.05.2008, 23:12
PHP?


<?php
$ip=$_SERVER['REMOTE_ADDR'];
if(strpos($ip,'192.168')===0 || strpos($ip,'10.')===0)
header("Location: страница_для_локалки");
else
header("Location: страница_для_остальных");
?>

InfernoNet
20.05.2008, 23:20
blackybr, по поводу .htaccess сам знал, нужно именно на php было.
d_x, спасибо.

GreenBear
20.05.2008, 23:23
if(strpos($ip,'192.168')===0 || strpos($ip,'10.')===0)
200.200.192.168
200.200.10.10

d_x
20.05.2008, 23:29
Цитата:
if(strpos($ip,'192.168')===0 || strpos($ip,'10.')===0)


200.200.192.168
200.200.10.10

Не сработает, я всё правильно сделал.

strpos('200.200.192.168','192.168')!=0 ни в коем случае, оно равно 8.

Если же подстрока '192.168' или '10.' вообще не будут найдены в $ip, то strpos вернёт false, но и это учтено тройным сравнением с нулём.

Кстати, strpos - самый быстрый способ, быстрее регулярок и substr.

GreenBear
20.05.2008, 23:38
я думаю что надо делать preg_match('/^(192\.168|10\.).*/', $ip);

GreenBear
20.05.2008, 23:44
на счет быстроты и оптимизации - не стоит варить яйца там, где их надо жарить.

Isis
20.05.2008, 23:46
<?php
$ip = $_SERVER['REMOTE_ADDR'];
if(substr($ip, 0, 8) == '192.168.' || substr($ip, 0, 3) == '10.')
{
header('Location: localnetwork.php');
}
else
{
header('Location: globalnetwork.php');
}
?>