Автор Тема: Что означает этот код  (Прочитано 669 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

toliasikАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 10 сообщений
  • Дата регистрации: Март 2017
  • Сообщений: 25
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    Социальные сети:
    ВКонтакте
Что означает этот код
« : 17 Октября 2019, 15:57:48 »
Помогите понять код на русском языке
Я понимаю так - если база подключена то > 0  что означает 0 ?
иначе ошибка нет доступа !

         if($db->NumRows() > 0)
            die(status('err','Нет доступа'));

Это вход в админку не могу войти пишет нет доступа Получается так я ввёл логин пароль и секр ключь вернулось больше 0 строк !
Тогда почему пишет нет доступа ? Весь код скинул ниже )
 

GameRussia

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 100 сообщений Репутация более 5 За помощь пользователям Более 10 созданных тем
  • Дата регистрации: Июнь 2017
  • Сообщений: 227
  • Страна: ru
  • Поблагодарили: 29 раз(а)
  • Репутация +9/-0
  • Пол: Мужской
Что означает этот код
« Ответ #1 : 17 Октября 2019, 18:32:05 »
Какой код идет выше? Это вообще проверка на строки. Если sql запрос вернул больше 0 строк, то ошибка
 

toliasikАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 10 сообщений
  • Дата регистрации: Март 2017
  • Сообщений: 25
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    Социальные сети:
    ВКонтакте
Что означает этот код
« Ответ #2 : 17 Октября 2019, 20:02:03 »
Какой код идет выше? Это вообще проверка на строки. Если sql запрос вернул больше 0 строк, то ошибка
<?php
function badAuth($db){
   $ip = $_SERVER['REMOTE_ADDR'];
   $date = time();
   $db->Query("INSERT INTO bad_auth (ip,date) VALUES ('{$ip}','{$date}')");
   echo status('err','Логин или пароль или ключ неверен');
}
if (!isset($_SESSION['admin'])) {
   if(isset($_POST['login']) && !empty($_POST['login'])){
      if (isset($_POST['password']) && !empty($_POST['password'])) {
         $spec_time = time() - 21600;
         $db->Query("SELECT * FROM bad_auth WHERE ip = '{$ip}' AND date > '{$spec_time}'");
         if($db->NumRows() > 0)
            die(status('err','Нет доступа'));

         $db->Query("SELECT * FROM admin WHERE id = '1'");
         $admin_data = $db->FetchArray();
         $login = func::clear($_POST['login']);
         $password = func::clear($_POST['password']);
         if($login == $admin_data['login']){
            if($password == $admin_data['password']){
               $key = $admin_data['secret'];
               if ($_POST['key'] == $key) {
                  $_SESSION['admin'] = true;
                  echo status('success');
               }else badAuth($db);
            }else badAuth($db);
         }else badAuth($db);
      }else echo status('err','Укажите пароль');
   }else echo status('err','Укажите логин');
}else echo status('err','Вы авторизованы');
 
Помечен как лучший ответ пользователем toliasik 18 Октября 2019, 14:22:15

GameRussia

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 100 сообщений Репутация более 5 За помощь пользователям Более 10 созданных тем
  • Дата регистрации: Июнь 2017
  • Сообщений: 227
  • Страна: ru
  • Поблагодарили: 29 раз(а)
  • Репутация +9/-0
  • Пол: Мужской
Что означает этот код
« Ответ #3 : 18 Октября 2019, 06:34:30 »
Насколько я понял, это проверка на запрещенный ip, попросту говоря БАН пользователя.
В запросе перед условием
$db->Query("SELECT * FROM bad_auth WHERE ip = '{$ip}' AND date > '{$spec_time}'");
Выбираются все строки с определенным ip и датой. А в условии ниже проверяется, если запрос вернул хоть одну строку, т.е ip юзера есть в "черном списке", то не даем авторизоваться.
 

toliasikАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 10 сообщений
  • Дата регистрации: Март 2017
  • Сообщений: 25
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
    Социальные сети:
    ВКонтакте
Что означает этот код
« Ответ #4 : 18 Октября 2019, 14:30:06 »
Всё разобрался !!! Дело было так Я не мог войти в админку потому что в коде стоит защита по ip если не тот айпи то срабатывал бан Для проверки я менял ip и попал в бд за бан После этого скрипт проверял - если мой айпи бан ОШИБКА нет доступа !!! Удалил себя из бд и вход востановлен !
Спасибо GameRussia  :big20:

 
Теги: