Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на повторное нажатие 
:(
    Опции темы
GePo
Дата 30.5.2004, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: 1
Всего: 3



Что-то я никак не пойму, а как сделать:
Есть форма добавления записи(например гостевой). Юзер начал очень быстро жать на кнопку submit и добавляется очень много записей. Как от этого защититься?
--------------------
PM MAIL WWW   Вверх
Гость_RaZoR
Дата 30.5.2004, 22:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











почитай тут.
  Вверх
skalex
Дата 31.5.2004, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Это можно предотвратить при помощи JavaScript!
PM   Вверх
GePo
Дата 31.5.2004, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: 1
Всего: 3



Mace
Как?
Блокировка по времени(это в php) по-моему не самая лучшая - я могу на кнопку жать и больше 5 секунд.

--------------------
PM MAIL WWW   Вверх
skalex
Дата 31.5.2004, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Один из вариантов - поставить на submit формы вызов JavaScript-функции, которая делает кнопку недоступной.
Такой эффект можно наблюдать прямо на этом форуме - при добавлени сообщения кнопка "Добавить" становится disabled!
Есть и другие варианты...

Это сообщение отредактировал(а) Mace - 31.5.2004, 08:28
PM   Вверх
IZ@TOP
Дата 31.5.2004, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Проще делать блокировку для юзера на какое то время после добавления первой записи. Устанавливаешь куку
Цитата
setcookie('isLock', time())
потом в начале скрипта проверяешь установлена ли кука с именем isLock, и если да, то проверяешь прошол ли интервал времени установленный в настройках после которого можно снова добавить запись:
Цитата
$exit = (isset($_COOKIE['isLock']) == true) ? (($_COOKIE['isLock'] + $lockedTime > time()) ? 0 : 1 ) : 0;
// Далее если условие прошло, то делаем выход.
if($exit) exit();

Самый по моему мнению простейший способ.
Добавлено @ 10:15
Цитата
Один из вариантов - поставить на submit формы вызов JavaScript-функции, которая делает кнопку недоступной.
Такой эффект можно наблюдать прямо на этом форуме - при добавлени сообщения кнопка "Добавить" становится disabled!
Есть и другие варианты...

Это уже в другой раздел форума wink.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Гость_RaZoR
Дата 31.5.2004, 10:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а если куки отключены? wink.gif
  Вверх
IZ@TOP
Дата 31.5.2004, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Если отключены куки, пиши в бд что по ip такому то, было добавление данных в такое то время. И ессно делаешь выборку, делаешь в таблице поле id в котором хранится ip, и поле lastTime, потом просто делаешь выборку по REMOTE_ADDR, если запись найдена, дальше действуем по тому же сценарию.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 31.5.2004, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Была у меня мысль... Слать Connection: Keep-Alive, потом через функции апача отслеживать сокет и базировать ограничения на этом.
ИМХО технически это должно быть реализуемо, только времени покопаться в мануалах и узнать, как именно, не нашлось.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
skalex
Дата 31.5.2004, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



IZ@TOP
Слишком как то сложно ты предлагаешь это делать...
PM   Вверх
Master
Дата 31.5.2004, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Я делал такой класс от накручивания голосования... там и куки и реферер и айпи.
Код
<?php

class securety {
   var $cookies_enabled = 0;
   var $referer_correct = 0;
   var $ip_free = 1;

   function cookie_ch() {
       if (!isset($_COOKIE['cookies_ch'])) {
           setcookie('cookies_ch','1');
           if (!isset($_GET['cc'])) {
               header('Location: page.php?cc=1');
           }
           $this->cookies_enabled = 0;
           return false;
       } else {
           $this->cookies_enabled = 1;
           return true;
       }
   }

   function referer() {
       if (isset($_SERVER['HTTP_REFERER'])) {
           if (preg_match('%^http://(www\.)?'.$_SERVER['HTTP_HOST'].'/%',$_SERVER['HTTP_REFERER'])) {
                $this->referer_correct = 1;
           }
       }
   }

   function ch_ip() {
       mysql_query("DELETE FROM sv_ip WHERE DATE_FORMAT(dt_write,'%d') < '".date('d')."' OR DATE_FORMAT(dt_write,'%m') < '".date('m')."' OR DATE_FORMAT(dt_write,'%Y') < '".date('Y')."'");
       $query = mysql_query("SELECT * FROM sv_ip WHERE ip_adress = '".$_SERVER['REMOTE_ADDR']."'");
       if (mysql_num_rows($query) > 0) {
           $this->ip_free = 0;
       }
   }
}

$securety = new securety;
$securety->cookie_ch();
$securety->referer();
$securety->ch_ip();

?>



--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Secandr
Дата 31.5.2004, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Master
А зачем класс, если с этим справится простая процедура?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Master
Дата 31.5.2004, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Secandr
так по моему проще и красивее. все-таки эти вещи для одной цели предназначены, вот я и объединил их. Дальше смотриш свойства класса и делаеш выводы в скрипте.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Secandr
Дата 31.5.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



а насколько такой класс замедляет работу скрипта по сравнению с функциями?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Гость_RaZoR
Дата 31.5.2004, 18:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











можно сделать поиск по базе(хотя бы по последним сообщениям) на наличие уже такого.. ну или просто с последним сравнивать.. типа добавляется что-то и сравнивается с последней(или несколькими) записями в базе..
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1306 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.