С регистрацией или без от выбранных стран
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
С регистрацией или без от выбранных стран
Подскажите, как можно реализовать следующее? Хочу сделать так, чтобы для посетителей определенного государства (например Болгарии) необходима была регистрация, чтобы создавать темы или писать в них. А для всех остальных, чтобы вход был свободным, т.е. чтобы могли создавать темы, а так же оставлять свои сообщения без обязательной регистрации.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: С регистрацией или без от выбранных стран
Если ваши посетители ходят только с "честных" IP-адресов, без проблем. Иначе - никак.
-
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
Хочу сделать свободный доступ для общения без обязательной регистрации для всех кроме определенного государства. Так как форум на тему туризма в определенной стране, просто хочу избежать безразборного постинга скрытой рекламы или недобросовестной антирекламы со стороны заинтересованных (в живущих и работающих данном регионе).MAzZY писал(а):По какому признаку будете делить посетителей?
Да именно на базе IP- адресов. (которая у меня имеется)MAzZY писал(а):Если ваши посетители ходят только с "честных" IP-адресов, без проблем. Иначе - никак.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: С регистрацией или без от выбранных стран
Смотря сколько диапазонов адресов нужно учесть. В общем виде, в posting.php находите строки
В условия по $auth добавляете через && условия вида
Это если для одного диапазона.
Код: Выделить всё
case 'post':
if ($auth->acl_get('f_post', $forum_id)) Код: Выделить всё
case 'reply':
if ($auth->acl_get('f_reply', $forum_id)) Код: Выделить всё
!in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))
Последний раз редактировалось rxu 03.06.2010 14:22, всего редактировалось 1 раз.
Причина: По ошибке забыто ip2long($user->ip)
Причина: По ошибке забыто ip2long($user->ip)
-
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
Подскажите пожалуйста почему выдает ошибку "syntax error" ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 4 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: С регистрацией или без от выбранных стран
yordanp
скобки
а у вас
нужно
скобки
Код: Выделить всё
if (условие)
Код: Выделить всё
if (условие1) и (условие2)Код: Выделить всё
if ((условие1) и (условие2))Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
Я заменил код так как вы указали, но все осталось без изменений. Экспериментально вписал свой IP диапазон, но все равно свободно мне разрешило добавлять новые темы и посты без какой-либо регистрации или авторизации. Может я что-то с кодом опять перепутал?
Код: Выделить всё
case 'post':
if (($auth->acl_get('f_post', $forum_id))
&& !in_array($user->ip, range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) Код: Выделить всё
case 'reply':
if (($auth->acl_get('f_reply', $forum_id))
&& !in_array($user->ip, range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) -
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: С регистрацией или без от выбранных стран
yordanp
Моя ошибка, несомненно, $user->ip также необходимо преобразовать в целое, т.е.
Моя ошибка, несомненно, $user->ip также необходимо преобразовать в целое, т.е.
Код: Выделить всё
case 'post':
if ($auth->acl_get('f_post', $forum_id)
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) Код: Выделить всё
case 'reply':
if ($auth->acl_get('f_reply', $forum_id)
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) -
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
Что-то никак ни получается достичь желаемого результата.
Вписываю для пробы свой IP адрес. Пробую создать новую тему или написать сообщение, соответно система отправляет меня зарегистрироваться или авторизоваться. Но и после авторизации все равно не разрешает оставлять сообщения.
Пробовал входить по разному включительно и как Админ, результат тот же: “Вы не можете добавлять сообщения в этом форуме”. Получается что-то типа бана по IP.
Вписываю для пробы свой IP адрес. Пробую создать новую тему или написать сообщение, соответно система отправляет меня зарегистрироваться или авторизоваться. Но и после авторизации все равно не разрешает оставлять сообщения.
Пробовал входить по разному включительно и как Админ, результат тот же: “Вы не можете добавлять сообщения в этом форуме”. Получается что-то типа бана по IP.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: С регистрацией или без от выбранных стран
Н-дас. Пробуем по такой схеме
Код: Выделить всё
case 'post':
if ($auth->acl_get('f_post', $forum_id) && !$user->data['is_registered']
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) Код: Выделить всё
case 'reply':
if ($auth->acl_get('f_reply', $forum_id) && !$user->data['is_registered']
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) -
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
Код: Выделить всё
case 'post':
if ($auth->acl_get('f_post', $forum_id) && !$user->data['is_registered']
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) Код: Выделить всё
case 'reply':
if ($auth->acl_get('f_reply', $forum_id) && !$user->data['is_registered']
&& !in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) -
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: С регистрацией или без от выбранных стран
По-прежнему - это как? И в зарегистрированном виде не позволяет отвечать?
-
yordanp
- phpBB 1.2.1
- Сообщения: 22
- Стаж: 16 лет 9 месяцев
Re: С регистрацией или без от выбранных стран
По-прежнему - это как? И в зарегистрированном виде не позволяет отвечать?
Вписываю для пробы свой IP адрес. Пробую создать новую тему или написать сообщение, соответно система отправляет меня зарегистрироваться или авторизоваться. Но и после авторизации все равно не разрешает оставлять сообщения.
Пробовал входить по разному включительно и как Админ, результат тот же: “Вы не можете добавлять сообщения в этом форуме”. Получается что-то типа бана по IP.
-
MIT
- Former team member
- Сообщения: 2500
- Стаж: 17 лет 6 месяцев
- Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
- Благодарил (а): 3 раза
- Поблагодарили: 351 раз
Re: С регистрацией или без от выбранных стран
Не сильно вникал в топик, но если надо узнать факт наличия элемента в массиве, то почему !in_array-то? «!» — это отрицание.
Добавлено спустя 2 минуты 8 секунд:
И вроде как там не && надо, а ||, т.е. типа так:
Добавлено спустя 2 минуты 8 секунд:
И вроде как там не && надо, а ||, т.е. типа так:
Код: Выделить всё
if (($auth->acl_get('f_post', $forum_id) && !$user->data['is_registered'])
|| in_array(ip2long($user->ip), range(ip2long('77.85.0.0'), ip2long('77.85.255.255')))) 
