Здраствуйте
В overall_header.html у меня прописана менюшка которую я хочу показывать только тем пользователям у кого IP входит в диапазон 10.0.0.0 - 10.255.255.255, т.е. для локальных. Для пользователей из интернета эта менюшка будет не видна. Как это реализовать?
Пока у меня стоит условие <!-- IF S_USER_LOGGED_IN -->...
Проверка IP
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
Vitalik
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 18 лет 6 месяцев
- Откуда: Мытищи, МО
Узнай адрес клинта
Разреж его по точке на подадреса
Если из диапазона - показывай.
Или еще проще
Если нужна только область 10.х.х.х
Если первые символы 10. адреса клиента - показывай, если нет - скрывай.
php сила
Разреж его по точке на подадреса
Если из диапазона - показывай.
Или еще проще
Если нужна только область 10.х.х.х
Если первые символы 10. адреса клиента - показывай, если нет - скрывай.
php сила
Автоматизация процесса сбора, хранения, обработки и предоставления информации
Мой блог про военных Тут
Мой блог про военных Тут
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
1)Пребразуете диапазон адресов по формуле:
$ip_hex_1=(10 * 16777216) + (0 * 65536) + (0 * 256) + (0);
$ip_hex_2 = (10 * 16777216) + (255 * 65536) + (255 * 256) + (255);
2) Разбиваете адрес на 4 части, например
3) Преобразуете этот адрес аналогичным способом:
$ip_hex_user = ($ip_array[0] * 16777216) + ($ip_array[1] * 65536) + ($ip_array[2] * 256) + ($ip_array[3]);
4) Делаете обычную проверку на принадлежность числа диапазону, например
5) В шаблоне делаете блок по условию <!-- IF USER_VALID -->...
В общих чертах так.
$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);$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,
));
}
В общих чертах так.
-
insp63
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 18 лет 6 месяцев
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
rxu
а если через регулярные выражения? Ведь можно взять сначала сам ip адрес, затем первую часть - то что перед первой точкой. Ну и дальше сравнивать. Почему именно так вы написали?
ЗЫ. Я только начал php учить, поэтому интересно почему именно такое решение.
а если через регулярные выражения? Ведь можно взять сначала сам ip адрес, затем первую часть - то что перед первой точкой. Ну и дальше сравнивать. Почему именно так вы написали?
ЗЫ. Я только начал php учить, поэтому интересно почему именно такое решение.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
crash
- Former team member
- Сообщения: 6517
- Стаж: 22 года 2 месяца
- Откуда: Бердск
- Поблагодарили: 15 раз
FladeX
просто сравнивается если адрес в диапазоне между 10.0.0.0 и 10.255.255.255, то все пучком. Но опять же это самый просто пример, а если у меня с 10.0.0.0 по 10.1.255.255, ну или 10.0.0.255
просто сравнивается если адрес в диапазоне между 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 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
crash
ну вообще да, это более универсальный способ.. Понятно
ну вообще да, это более универсальный способ.. Понятно
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
Ltd
- phpBB 1.2.0
- Сообщения: 14
- Стаж: 19 лет
Тема конечно старая, но просто на заметку. В php есть готовая функция ip2long.rxu писал(а):1)Пребразуете диапазон адресов по формуле:

