Проверка IP

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.

Проверка IP

Сообщение insp63 21.03.2008 3:47

Здраствуйте
В overall_header.html у меня прописана менюшка которую я хочу показывать только тем пользователям у кого IP входит в диапазон 10.0.0.0 - 10.255.255.255, т.е. для локальных. Для пользователей из интернета эта менюшка будет не видна. Как это реализовать?
Пока у меня стоит условие <!-- IF S_USER_LOGGED_IN -->...
insp63
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 21.03.2008 3:38

Сообщение Vitalik 21.03.2008 11:57

Узнай адрес клинта
Разреж его по точке на подадреса
Если из диапазона - показывай.

Или еще проще
Если нужна только область 10.х.х.х

Если первые символы 10. адреса клиента - показывай, если нет - скрывай.

php сила
Автоматизация процесса сбора, хранения, обработки и предоставления информации

Мой блог про военных Тут
Vitalik
phpBB 1.0.0
 
Сообщения: 8
Зарегистрирован: 07.03.2008 20:43
Откуда: Мытищи, МО

Сообщение rxu 21.03.2008 18:13

1)Пребразуете диапазон адресов по формуле:
$ip_hex_1=(10 * 16777216) + (0 * 65536) + (0 * 256) + (0);
$ip_hex_2 = (10 * 16777216) + (255 * 65536) + (255 * 256) + (255);
2) Разбиваете адрес на 4 части, например
Код: Выделить всё
$ip_array = array();
$ip_array = explode('.', $user->ip);

3) Преобразуете этот адрес аналогичным способом:
$ip_hex_user = ($ip_array[0] * 16777216) + ($ip_array[1] * 65536) + ($ip_array[2] * 256) + ($ip_array[3]);
4) Делаете обычную проверку на принадлежность числа диапазону, например
Код: Выделить всё
if ($ip_hex_user >= $ip_hex_1 && $ip_hex_user <= $ip_hex_2)
{
      Тут передаете в шаблон определенную переменную;
       Например так (грубо)
$template->assign_vars(array(
   'USER_VALID'   => true,
));
}

5) В шаблоне делаете блок по условию <!-- IF USER_VALID -->...

В общих чертах так.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4319
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение insp63 21.03.2008 22:19

Спасибо огромное... rxu - ты гуру php :D
insp63
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 21.03.2008 3:38

Сообщение FladeX 23.03.2008 19:35

rxu
а если через регулярные выражения? Ведь можно взять сначала сам ip адрес, затем первую часть - то что перед первой точкой. Ну и дальше сравнивать. Почему именно так вы написали?
ЗЫ. Я только начал php учить, поэтому интересно почему именно такое решение.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 2
Аватара пользователя
FladeX
phpBB 2.0.17
 
Сообщения: 1080
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение crash 23.03.2008 19:54

FladeX
просто сравнивается если адрес в диапазоне между 10.0.0.0 и 10.255.255.255, то все пучком. Но опять же это самый просто пример, а если у меня с 10.0.0.0 по 10.1.255.255, ну или 10.0.0.255
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
crash
Support Team Leader
 
Сообщения: 6277
Зарегистрирован: 07.07.2004 17:12
Откуда: Мирный

Сообщение FladeX 23.03.2008 20:02

crash
ну вообще да, это более универсальный способ.. Понятно
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 2
Аватара пользователя
FladeX
phpBB 2.0.17
 
Сообщения: 1080
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Ltd 15.04.2008 17:02

rxu писал(а):1)Пребразуете диапазон адресов по формуле:


Тема конечно старая, но просто на заметку. В php есть готовая функция ip2long.
Ltd
phpBB 1.2.0
 
Сообщения: 14
Зарегистрирован: 14.09.2007 13:38


Вернуться в Для авторов (phpBB 3.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0