示例#1
0
 /**
  * вызываем метод проверки  пользователя на предмет регистрации
  */
 private function verify()
 {
     //Получаем IP из массива SERVER
     $ip = $_SERVER['REMOTE_ADDR'];
     //$ip=77;
     $ip = intval(ip2long($ip));
     /*проверяем массивы POST[] и GET[]*/
     if (isset($_POST['user']) & isset($_POST['password']) & !empty($_POST['user']) & !empty($_POST['password'])) {
         /*Проверяем содержимое массива POST[] на предмет наличия непозволительных символов*/
         $name = htmlspecialchars($_POST['user']);
         $name = trim($name);
         $password = htmlspecialchars($_POST['password']);
         $pasword = trim($password);
         $db = new DB_connect();
         /*Проверяем есть ли бан на текущее IP*/
         $bun = $db->permit($ip);
         if ($bun == 'false') {
             /*если бан то сравниваем текущее время со времененем зафиксированным
              *  в базе если время в базе больше чем текущее то бан все еще работает 
              * а если наоборот то бан закончился и можно продолжить попытки входа  */
             $endTime = $db->getEndTime($ip);
             //получаем время бана
             $endTime = strtotime($endTime);
             $now = @time();
             //текущее время
             $res = $endTime - $now;
             //разница
             if ($res < 0) {
                 //бан можно прекращать
                 $db->license($ip);
                 //снимаем бан
                 header("Location:index.php");
             } else {
                 header("Location:view/bun.php");
             }
         }
         $is_us = $db->is_user($name, $password);
         /*если такой пользлователь в базе есть переходим на страницу админа*/
         if ($is_us) {
             require 'view/secret_page.php';
             return true;
         } else {
             if ($bun != 'false') {
                 /*Если входные данные не верны то занести IP в базу и начать подсчитвать
                 *  попытки войти в админку по данному IP */
                 //считаем попытки
                 $attempt = $db->num_attempt($ip);
                 /*если попыток больше 5 то на 3 минуты баним IP*/
                 if ($attempt > 5) {
                     /*Передаем false в таблицу counter и с этого момента ip не проходит в базу
                     *  Фиксирум время начала бана в базе данных*/
                     $db->bun($ip);
                     // передаем false
                     $db->setEndTime($ip);
                     //запускаем время бана
                     header("Location:view/bun.php");
                 }
                 ob_start();
                 $msg = 'Неверный логин или пароль';
                 require 'view/message.php';
                 $message = ob_get_contents();
                 require 'view/login_page.php';
                 return false;
             }
         }
         /*Если массив POST[] пустой то снова загрузить форму с предупреждающим сообщением */
     } else {
         ob_start();
         $msg = 'Для входа в админку заполните форму.Поля не должны быть пустыми';
         require 'view/message.php';
         $message = ob_get_contents();
         ob_end_flush();
         require 'view/login_page.php';
     }
 }