Помощь регистрация только для заданных IP адресов

Тема в разделе "DLE", создана пользователем newkos, 9 окт 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. newkos

    newkos Создатель

    Регистр.:
    22 сен 2006
    Сообщения:
    35
    Симпатии:
    56
    Добрый день!

    Помогите решить проблему или найти готовое решение.

    DLE 7.5 нулед.

    Нужно сделать проверку при регистрации на определённые (или диапазон) IP, которые перед этим заданы или в базе или в txt файле и если этих айпи нет там то отклонить регистрацию показав сообщение или страницу.

    Как это реализовать ?

    Наперёд спасибо за помощь.
     
  2. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    980
    Симпатии:
    315
    Доступ к регистрационной страничке с привелегиями ысталенными через .htaccess
    PHP:
    <FilesMatch "\.(register)$">
    Order allow,deny
    Deny from all
    allow from 172.16.200.2 127.0.0.1 123.123.123
    </FilesMatch>
    Подсказку дал, а дальше сам разберешься.
     
    Горбушка нравится это.
  3. newkos

    newkos Создатель

    Регистр.:
    22 сен 2006
    Сообщения:
    35
    Симпатии:
    56
    Спасибо за наводку, но не работает почему-то, выдаёт ошибку сервера "Internal server error"...
     
  4. kwin

    kwin

    Регистр.:
    22 авг 2007
    Сообщения:
    413
    Симпатии:
    167
    всё вполне тривиально

    создаём php файл, называем его filter.php, кладём в корень своего сайта.
    внутрь пихаем этот код, добавляем ip по вкусу ^_^

    PHP:
    <?php

    // ваши бан-маски. синтаксис приведен ниже  // 
    // XXX - все адреса диапазона текущего октета */ 
    $banmask[] = "87.XXX.XXX.XXX"
    $banmask[] = "166.66.XXX.XXX"
    $banmask[] = "157.150.123.XXX"
    $banmask[] = "137.112.10.17"
    $banmask[] = "192.168.148.90"

    function 
    check_deny($mask

     
    $idx preg_match("#(.*)\.(.*)\.(.*)\.(.*)#"$mask$ban_args); 
     
    $idx preg_match("#(.*)\.(.*)\.(.*)\.(.*)#"$_SERVER["REMOTE_ADDR"], $ip_args); 
     for(
    $x=1;$x<=4;$x++) 
     { 
     if ((
    $ban_args[$x] == $ip_args[$x]) || $ban_args[$x] == "XXX"
     return 
    "banned"
     return 
    "clear"
     } 

    foreach (
    $banmask as $key

     if (
    check_deny($key)=="banned"
     { 
     
    header("HTTP/1.0 403 Forbidden"); die("<html><h1>403 - Forbidden</h1>You dont have access to this server</html>"); 
     } 


    ?>
    открываем /engine/modules/register.php

    ищем
    PHP:
    require_once ENGINE_DIR '/classes/parse.class.php';
    чуть выше или ниже добавляем
    PHP:
    require_once ROOT_DIR '/filter.php';
    PROFIT!
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    http://www.nulled.ws/showpost.php?p=1061544&postcount=2

    Вот, я уже выкладывал функцию проверки ип. Она безопаснее выше-приведенной будет.
     
  6. newkos

    newkos Создатель

    Регистр.:
    22 сен 2006
    Сообщения:
    35
    Симпатии:
    56
    Вроде всё понял кроме... в banmask надо вписать айпи те которые я разрешаю для регистрации или те которые я запрещаю для регистрации ?

    если второе то это получается полинтернета айпи надо вписать, а если первое тогда мне это подходит действительно...

    ответте пожалуйста, и если это всё таки второй вариант, то можно ли переписать код немного для первгого варианта ?

    спасибо заранее

    Добавлено через 1 минуту
    А если использовать вашу функцию то пожалуйста роскажите куда её вписывать, потому что в програмировании не очень, по пунктам смог бы сделать.

    спасибо
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Пишешь в начале /engine/modules/register.php

    PHP:
    if (false !== checkIp($_SERVER['REMOTE_ADDR'], $config['allowip'])) { 
        exit(
    'Access Denied'); 
    вот так, будет всем отказано, у кого ИП НЕ соотвествует маскам.

    PHP:
    if (false === checkIp($_SERVER['REMOTE_ADDR'], $config['allowip'])) { 
        exit(
    'Access Denied'); 
    вот так, будет всем отказано, у кого ИП соотвествует маскам.
     
    newkos нравится это.
  8. newkos

    newkos Создатель

    Регистр.:
    22 сен 2006
    Сообщения:
    35
    Симпатии:
    56
    Спасибо, скрипт помог, только в вашем последнем посте наоборот надо, внизу будет НЕ отказано тем хто в списке айпи, а вверху отказано.

    спасибо всем ответившим, тему можна закрывать
     
Статус темы:
Закрыта.