Как избавиться от частого обращения юзера к сайту?

[Удален]
984

Добрый день, Уважаемые специалисты!

Как сделать, чтобы юзер мог отправлять ограниченное количество запросов на сайт (apache, php, mysql) за единицу времени. Потому что, начинают иногда тыкать F5 до безумия или отправлять один и тот же запрос на отправку сообщения например... Но он всё равно коннектится к серваку, как можно этого избежать? Скажем, если нажимает чаще одного раза в две секунды, то будет появляться сообщение о то, что пусть нажимает реже...

Или вот вариант: загрузилась страничка отправки сообщения, он написал сообщение и отправил, перед отправкой записали текущее время time() в $_SESSION[], а при повторной отправке сравнивать текущее время и время, сохраненное в $_SESSION[]... По крайней мере, это избавит от лишних коннектор к базе, да?

Какой софт нужно ещё поставить на серваке (виндовс 2003), чтобы избежать множественных коннектов с одного ip?

Посоветуйте, что-нибудь дельное, а то я только учусь во всем этом.. ;о)

Заранее благодарен!

Prior
На сайте с 03.03.2008
Offline
194
#1
Senator007:
Потому что, начинают иногда тыкать F5 до безумия или отправлять один и тот же запрос на отправку сообщения например... Но он всё равно коннектится к серваку, как можно этого избежать?

У вас что - форум параноиков и неврастеников?))

Поставьте баннер на сайт - и продавайте показы :D

По теме: нет, ну серьезно - никогда такой ситуации не возникало, чтобы обновляли страницу кучу раз специально. Блокирование посетителей с одного IP лучше не злоупотреблять - иногда люди ходят целыми локальными сетями в инет с одного внешнего IP.

Ответы на вопрос - https://answers.net.pl
[Удален]
#2
Prior:
У вас что - форум параноиков и неврастеников?))
Поставьте баннер на сайт - и продавайте показы :D

По теме: нет, ну серьезно - никогда такой ситуации не возникало, чтобы обновляли страницу кучу раз специально. Блокирование посетителей с одного IP лучше не злоупотреблять - иногда люди ходят целыми локальными сетями в инет с одного внешнего IP.

Обычное дело... любители поспамить и в итоге грузится сервак сообщениями...

как решение по поводу контроля времени.. а?

ixRock
На сайте с 14.11.2006
Offline
46
#3

а что если капчу повесить и после каждой отправки обнулять поля яваскриптом и в сессии, и придется тогда опять вбивать код чтобы отправить сообщение :)

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
[Удален]
#4
ixRock:
а что если капчу повесить и после каждой отправки обнулять поля яваскриптом и в сессии, и придется тогда опять вбивать код чтобы отправить сообщение :)

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

Илья Гусев
На сайте с 30.06.2009
Offline
59
#5

Вешать куку на отправку всего и вся, потом тупо сравнивать. Спамеры конечно пронюхают, но можно ее замаскировать как ни будь,допустим:

перевести юниксстамп в штамп от начала сотворения мира по календарю майя и присвоить каждой цифре соответствующую по счету букву с конца еврейского алфавита )))))

А в базе хранить не советую, я думаю она и так перенагружена.

E
На сайте с 01.09.2009
Offline
21
#6
По крайней мере, это избавит от лишних коннектор к базе, да?

да, это вам поможет, в htaccess помоему можно было что то вроде того чего вам нужно

Качественные шаблоны (http://sohib.ru/gallery/ru/index.html) Генератор анкоров SAPE (http://sohib.ru/generator/ru/index.html)
Sergey Gr.
На сайте с 21.10.2008
Offline
48
#7

Сессии и куки помогут только от дилетантов. Однострочного универсального решения здесь нет.

В вашей же ситуации проще всего сделать переадресацию после отправки сообщения.

[Удален]
#8


if ($_SESSION ["lastDate"] - time () == "0") {
header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s" ) . " GMT" );
header ( "Content-Type: text/html; charset=windows-1251" );
echo '<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<TITLE>Произошла ошибка!</TITLE>

<script language="JavaScript">
var g_iCount = new Number();
var g_iCount = "2";
function count(){
if((g_iCount - "1") >= "1"){
g_iCount = g_iCount - "1";
numberU.innerText = "" + g_iCount;
setTimeout("count()","1000");
} else {
window.location.reload();
}
}
</script>

</HEAD>
<BODY onload="count()">
<div id="error">
<b><font style="color:#666666;">В процессе обработки запроса произошла следующая ошибка:</font></b><br>
<font style="color:#666666;"><b>Ошибка:</b></font> <font style="color:#666666;">вы попытались загрузить более одной страницы в секунду.</font><br>
<a href="#" onclick="history.go(-1);">Вернуться назад</a></div>
<div id="numberU" style="display: none;"></div>
</BODY>
</HTML>';
exit ();
}

$_SESSION ["lastDate"] = time ();

чёто типа такого

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий