Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сделать защиту или что-то в этом смысле
Форумы портала PHP.SU » » Вопросы новичков » Сделать защиту или что-то в этом смысле

Страниц (1): [1]
 

1. mrKotik - 01 Июня, 2014 - 19:05:50 - перейти к сообщению
Всем привет, как можно сделать мини защиту на сайте, вот например открыл ты 10 раз страницу info.php в чичение 1 минуты, а потом что если это совершало 10 раз подряд в чичение минуты, чтоб забанить пользователя, по ID на минут 5 чтоб ему выдавало 500 Internal Server Error можно ли как-то это сделать???
2. Vinyl - 01 Июня, 2014 - 20:20:38 - перейти к сообщению
Вам с использованием БД, tmp-файлов, сессий/кук или memcache(d)?


А вообще, судя по всему, знания у Вас нулевые, т.к. делается это элементарно. Вы уверены, что это Вам нужно? Вам не интересно найти решение самому? Если нет, ИМХО, программирование - не Ваше призвание.

Да, и Вам бы Русский язык подучить, а потом ЯП
3. mrKotik - 01 Июня, 2014 - 20:22:21 - перейти к сообщению
Vinyl пишет:
Вам с использованием БД, tmp-файлов, сессий/кук или memcache(d)?


А вообще, судя по всему, знания у Вас нулевые, т.к. делается это элементарно. Вы уверены, что это Вам нужно? Вам не интересно найти решение самому? Если нет, ИМХО, программирование - не Ваше призвание.

Да, и Вам бы Русский язык подучить, а потом ЯП


БД можно)
4. Vinyl - 01 Июня, 2014 - 21:03:34 - перейти к сообщению
С БД тоже вариантов много. Например, создать табличку в БД вида:

[ id записи | идентификатор пользователя | таймштамп первого запроса | кол-во запросов | флаг блокировки ]

Затем, при каждом вызове файла смотреть в БД, есть ли там такой ID (как Вы указали выше), либо юзер-агент + IP, либо что угодно, что в Вашем приложении идентифицирует пользователя/гостя. Если нет - добавляете запись, если есть - смотрите на таймштамп:

CODE (htmlphp):
скопировать код в буфер обмена
  1. если (таймштамп < минуты)
  2. {
  3.  если (запросов от 1 до 8)
  4.  {
  5.    +1 к запросам;
  6.  }
  7.  в противном случае
  8.  {
  9.    меняем флаг блокировки на 1;
  10.  }
  11. }
  12. в противном случае
  13. {
  14.  сбрасываем счетчик на 1, ставим текущий таймштамп;
  15. }


Механизм блокировки реализуете на начальном этапе загрузки Вашего файла, но после установки соединения с БД, т.к. нам нужно будет при каджом вызове проверять вызывающего на флаг блокировки.

Отвратительный алгоритм, но для понимания процесса самое то. Вам же именно это нужно? Или готовое решение?
5. mrKotik - 01 Июня, 2014 - 21:06:19 - перейти к сообщению
Ну вроде я все понял))) Только как вызвать ошибку 500
6. Vinyl - 01 Июня, 2014 - 21:17:30 - перейти к сообщению
Вызывать надо доктора, а циферки 500 отдаются браузеру в качестве заголовка. И для чего Вам именно 500? Вы знаете, что это за ошибка? Вам логичнее 403.
7. mrKotik - 01 Июня, 2014 - 21:24:52 - перейти к сообщению
Vinyl пишет:
Вызывать надо доктора, а циферки 500 отдаются браузеру в качестве заголовка. И для чего Вам именно 500? Вы знаете, что это за ошибка? Вам логичнее 403.
Ну в принципе да лучше 403) как ее вывести заранее спасибо?
8. Vinyl - 01 Июня, 2014 - 21:29:24 - перейти к сообщению
Почитайте тут
9. mrKotik - 01 Июня, 2014 - 21:29:32 - перейти к сообщению
А все нашел, спасибо большое за ответ)))

header('HTTP/1.1 500 Internal Server Error');


Щас буду писать код)))
10. Vinyl - 01 Июня, 2014 - 21:35:59 - перейти к сообщению
mrKotik пишет:
Щас буду писать код)))


Из Ваших уст звучит как угроза) Без обид)
11. mrKotik - 01 Июня, 2014 - 22:43:22 - перейти к сообщению
Vinyl пишет:
mrKotik пишет:
Щас буду писать код)))


Из Ваших уст звучит как угроза) Без обид)


Та нет ничего страшного)))

 

Powered by ExBB FM 1.0 RC1