ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

basic http authentication + PHP + MySQL
  #1  
Старый 11.06.2010, 18:42
Аватар для VotoN
VotoN
Новичок
Регистрация: 18.11.2008
Сообщений: 11
Провел на форуме:
61655

Репутация: 5
По умолчанию basic http authentication + PHP + MySQL

Всем привет.
На сайте действует HTTP-авторизация, привязанная к MySQL-базе. Вот ее код:
Код:
<?php 
 
  // Устанавливаем соединение с базой данных
  require_once("config.php");
  // Если пользователь не авторизовался - авторизуемся
	  if(!isset($_SERVER['PHP_AUTH_USER'])) 
	  { 
	    Header("WWW-Authenticate: Basic realm=\"Admin Page\""); 
	    Header("HTTP/1.0 401 Unauthorized"); 
	    echo 'Авторизация отменена';
	    exit();
	  }

  else 
  { 
     if (!get_magic_quotes_gpc())
    {
      $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
      $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    }
    $_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']);
    $_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']);
    
    $query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'";
    $lst = @mysql_query($query); 
    // Если ошибка в SQL-запросе - выдаём окно
    if(!$lst)
    {
      Header("WWW-Authenticate: Basic realm=\"Admin Page\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      exit(); 
    }
    // Если такого пользователя нет - выдаём окно
    if(mysql_num_rows($lst) == 0)
    {
      Header("WWW-Authenticate: Basic realm=\"Admin Page\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      echo 'Такого пользователя нет';
      exit(); 
    }
    // Если все проверки пройдены, сравниваем хэши паролей
    $pass = @mysql_fetch_array($lst);
    
    if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    {
      Header("WWW-Authenticate: Basic realm=\"Admin Page\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      echo 'Неправильный пароль';
      exit();
    }

  }

?>
В последнем куске кода идет сравнение паролей:
Код:
    $pass = @mysql_fetch_array($lst);
    
    if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    {
      Header("WWW-Authenticate: Basic realm=\"Admin Page\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      echo 'Неправильный пароль';
      exit();
    }
Суть вот в чем - нужно, чтобы после 5 неудачных попыток ввода пароля выводилось сообщение "Система блокирована, зайдите попозже" и устанавливались куки в систему сроком на час.

Пробовал вставить в последний кусок кода вот эту конструкцию:
Код:
$value = "UB_AUTH_OK";
setcookie("Auth", $value, time()+3600);  /* 1 час */
$loc = ($_REQUEST['from']);
header ("Location: ".$loc);
Куки ставятся и доступ блокируется на час, но после первой же неудачной попытки и сообщение не выводится о том, что система блокирована. Куда поставить счетчик или цикл для 5 попыток, так и не удалось догнать
Кто шарит, помогите разобраться, плиз.

Последний раз редактировалось VotoN; 11.06.2010 в 20:00.. Причина: уточнение зоголовка
 
Ответить с цитированием

  #2  
Старый 11.06.2010, 19:11
Аватар для phpdreamer
phpdreamer
Постоянный
Регистрация: 26.07.2009
Сообщений: 321
Провел на форуме:
444589

Репутация: 123
Отправить сообщение для phpdreamer с помощью ICQ
По умолчанию

google.ru
запрос "php ограничить попытки ввода"
первая ссылка //(мой блог)
 
Ответить с цитированием

  #3  
Старый 12.06.2010, 12:02
Аватар для IndigoMan
IndigoMan
Новичок
Регистрация: 07.06.2008
Сообщений: 8
Провел на форуме:
35514

Репутация: 0
По умолчанию

Виртуальная память php это mysql. Создавай там таблицу ,поля буду там для IP адресов и для количества ввода и для каждого IP. Это все.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Живые прокси xdx ICQ 111 15.04.2007 13:10
Proxy Kozak-Scv Анонимность 2 11.02.2007 17:28
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ