Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
keir
Зарегистрирован: 10.03.2005 Сообщения: 2
|
Добавлено: Чт Мар 10 2005 15:54 Заголовок сообщения: проверка на ip в php |
|
|
Как сделать, что бы при $REMOTE_ADDR 192.168.0.0/16 переменная, например, $a ровнялась еденице, а со всех других адресов - 0? |
|
Вернуться к началу |
|
|
AndyTower
Зарегистрирован: 11.01.2005 Сообщения: 23
|
Добавлено: Пт Мар 11 2005 10:35 Заголовок сообщения: Re: проверка на ip в php |
|
|
keir писал(а): | Как сделать, что бы при $REMOTE_ADDR 192.168.0.0/16 переменная, например, $a ровнялась еденице, а со всех других адресов - 0? |
так ты же сам все ответил или спросил не корректно.
Проверяй переменную и присваивай че хочешь _________________ http://www.andytower.ru |
|
Вернуться к началу |
|
|
keir
Зарегистрирован: 10.03.2005 Сообщения: 2
|
Добавлено: Сб Мар 12 2005 04:25 Заголовок сообщения: |
|
|
под 192.168.0.0/16 подразумевается любой адрес в подсети 192.168
php не понимает такого обозначения. Поэтому нужно, что бы проверялись только первые два числа. Каким образом превратить ай-пишник в "понятный" для php вид? |
|
Вернуться к началу |
|
|
mad_alexx
Зарегистрирован: 14.01.2005 Сообщения: 154 Откуда: Иркутск
|
Добавлено: Сб Мар 12 2005 05:26 Заголовок сообщения: |
|
|
Можно выделить из IP-адреса подстроку, содержащую первые n символов с помощью функции substr
Код: | $rest = substr("abcdef", 0, 4); // возвращает "abcd" |
Можно воспользоваться следующей функцией, которая делит строку с адресом на подстроки, используя в качестве разделителя точку.
Код: |
function validate_ip($ip)
{
if (is_string($ip) && ereg('^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$', $ip, $part)) }
if ($part[1] <=255 && $part[2] <=255 && $part[3] <= 255 && $part[4] <= 255)
return true;
else
return false;
}
return false;
}
|
Эта функция возвращает true если строка IP-адрес и false, если она им не является. Но её легко переделать для проверки принадлежности IP-адреса заданной сети - см. массив $part. Для 192.168.0.0/16 нужно проверять первые два элемента массива $part. |
|
Вернуться к началу |
|
|
Malcolm
Зарегистрирован: 12.06.2004 Сообщения: 187 Откуда: Хабаровск
|
Добавлено: Сб Мар 12 2005 20:27 Заголовок сообщения: |
|
|
Цитата: | ожно воспользоваться следующей функцией, которая делит строку с адресом на подстроки, используя в качестве разделителя точку. |
есть такая функция полезная....
Код: |
$ipbytes=explode('.',$ip);
|
|
|
Вернуться к началу |
|
|
|