Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2014, 06:40   #1
MedwedoS
Пользователь
 
Аватар для MedwedoS
 
Регистрация: 24.02.2014
Сообщений: 72
По умолчанию Бесконечная отправка запроса sql

Я написал что то далеко похожее на поиск.

Усер вводит примерные данные и скрипт пытается найти по ним что нибудь в базе, но возникла проблема с фанатичным нажатием на кнопку "Найти", т.е. усер может на ней зациклиться так, что сервер задумается...

Как ограничить кол-во нажатий на эту чудо-кнопку?

Может использовать сессии или еще круче есть вариант?
MedwedoS вне форума Ответить с цитированием
Старый 23.11.2014, 09:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надо просто после посыла запроса либо заблокировать эту кнопку либо модальное окно кинуть с просьбой подождать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2014, 11:02   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Усер.. жесть.... усер..... )))))
ADSoft вне форума Ответить с цитированием
Старый 23.11.2014, 18:37   #4
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

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

В базе можно ставить флаг при поиске, когда поиск закончился флаг снимать. Флаги можно сделать для каждого юзера свой, чтобы один юзер не блокировал поиск другим. Чтобы сделать систему еще более устойчивой, флаг надо ставить числом текущего времени. Тогда если по каким-нибудь причинам произойдет сбой в коде до снятия флага, можно будет определить что последний поиск производился уже давно и, несмотря на наличие флага, разрешать поиск.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 23.11.2014 в 18:48.
Fenex вне форума Ответить с цитированием
Старый 24.11.2014, 08:05   #5
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
В базе можно ставить флаг при поиске, когда поиск закончился флаг снимать.
Зачем базу то напрягать? Есть сессии.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 29.11.2014, 04:16   #6
MedwedoS
Пользователь
 
Аватар для MedwedoS
 
Регистрация: 24.02.2014
Сообщений: 72
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Зачем базу то напрягать? Есть сессии.
Тогда у меня вопрос, вот такая проверка годная?
(назначает "0" сессии другая страница)
PHP код:
session_start();
if (
$_SESSION['start'] >= 10) {
    echo 
'Превышен лимит запросов, поиск временно не работает, зайдите позже.';
    exit();
} else {
    
$_SESSION['start']++;


p.s. а на странице html есть js который блочит кнопку после 10 нажатия.
MedwedoS вне форума Ответить с цитированием
Старый 02.12.2014, 07:23   #7
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Тогда у меня вопрос, вот такая проверка годная?
Сойдёт. Зачем только 10, если идёт поиск надо ждать пока он не закончится, бишь 1.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка запроса [Delphi7] -Jack- Общие вопросы Delphi 4 06.02.2013 23:58
Отправка POST запроса Besha07 PHP 8 18.10.2012 14:28
Отправка post-запроса С# galogen13 Помощь студентам 3 22.04.2012 03:20
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15