2012-04-17 3 views
2

Мне нужен мой PHP-скрипт, чтобы определить, имеет ли пользователь доступ к нему из локальной сети или нет.Как определить, доступен ли пользователь из локальной сети?

Я до сих пор использовал $ _SERVER ['REMOTE_ADDR'], чтобы определить, попадает ли ip-адрес пользователя в частный IP-диапазон, но он не работает с ipv6.

Текущий код используется ...

if(filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){       
    echo "NOT private or reserved ip"; 
}else{ 
    echo "private or reserved ip"; 
} 

... но это, кажется, не в состоянии, сообщая мой ipv6 не частным или защищены.

+1

Какой код использовался для IPv4? Что вы сделали, чтобы попытаться исправить проблему? IP6-адреса имеют совсем другой набор правил форматирования и могут быть даже переменной длиной в отличие от 32-битного номера, который составляет IP4-адрес. Как вы пытаетесь их разобрать? – GordonM

+0

Не IPv6 всегда 64 бит с переменной длиной записи? –

+0

@DeadElvis У меня есть локальная сеть на '10.1.7.' –

ответ

0

Я не уверен, что «одноадресный» означает, но в соответствии с Аннотация, это то, что вам нужно: RFC4193#3.1

Вы можете сравнить Global ID и Subnet ID с теми же значениями для вашего сервера.

Смежные вопросы