|
|
|
| на первой странице есть ФОРМА которая отправляет данные (сообщение итп)
если вводятся не все данные, то на второй странице выводится сообщение отом что "вернись назад и введи как положено". Соотвецтвенно чел жмет на СТРЕЛКУ назад и заполняет все как надо далее жмет ОК и информация добавляется в базу (человеку выдается сообщение с его логином и паролем для редактирования его инф.)
Но если в этот момент он нажимает на СТРЕЛКУ назад -появляется заполненоя форма ,он может нажать еще раз ОК и плодит в базу сообщения
спомощью чего можно это все красиво оформить?
вот несколько вариантов точнее 2
- если информация введена правильно, и если жмет назад ФОРМА должна очищатся
- если невсе поля в форме заполнены то очищатся она недолжна
- если информация введена правильно, и если жмет назад то человека должно перенаправлять на главную страницу или др
вобщем необходимо спастись от флуда. Может кто чтото предолжет иное чем то что я написал- цель недать случайно наплодить постов.
или можнт если данным пользователем заполнена форма правильно , то недать ему в течении скажем 5 минут добавлять сообщение | |
|
|
|
|
|
|
|
для: vorobey
(11.02.2009 в 00:35)
| | просто если всё норм создавайте сессию:
session_register("time");
$_SESSION['time'] = time();
а потмо каждый раз при добавлении еще проверяйте, что-то вроде:
if($_SESSION['time']+36000>=time())
{
exit("Сколько можно добавлять сообщения?");
}
ну или в сессии можно хранить данные из какого-либо поля, которое вводил пользователь, а потом, опять же, сравнивать. | |
|
|
|
|
|
|
|
для: vorobey
(11.02.2009 в 00:35)
| | > - если информация введена правильно, и если жмет назад ФОРМА должна очищатся
> - если информация введена правильно, и если жмет назад то человека должно перенаправлять на главную страницу или др
и то и другое делается путем редиректа. header("Location: / "); exit();
>или можнт если данным пользователем заполнена форма правильно , то недать ему в течении скажем 5 минут добавлять сообщение
а здесь - да, сессия. Только на 300 секунд, а не на 36000. | |
|
|
|
|
|
|
|
для: Trianon
(11.02.2009 в 09:19)
| | Trianon, а после header ставить exit обязательно нужно или на всякий случай? Разве выполнение скрипта не прерывается при header? Я его тоже всегда ставлю, но так и не знаю обязателен он или нет.. Пользуясь случаем решил спросить ) | |
|
|
|
|
|
|
|
для: goodwilll
(11.02.2009 в 13:53)
| | Выполнение скрипта не прерывается при header()
Более того, непосредственно вызов header даже поля заголовка не отправляет.
Он лишь добавляет поле в список.
Программисту может понадобиться поставить несколько полей.
И что будет если после первого же вызова прервется скрипт? | |
|
|
|
|
|
|
|
для: Trianon
(11.02.2009 в 18:14)
| | а я не ставлю exit() O_o и все нормально.... | |
|
|
|
|
|
|
|
для: Rembrant
(11.02.2009 в 18:28)
| | Смотря какая ситуация. Например, если вы отдаете в контейнер браузера (фрейм), а далее идет код, то это будет равноценно как сделать переход бросив все - браузер получит исключение в этом случае. | |
|
|
|
|
|
|
|
для: Rembrant
(11.02.2009 в 18:28)
| | Я рад за Вас. | |
|
|
|
|
|
|
|
для: vorobey
(11.02.2009 в 00:35)
| | проще всего, я думаю, так:
1. Когда юзер открывает отправление сообщения, то скрипт выдает ему форму, в которой есть поле hidden и в нём записано некое значение(лучше всего если это значение будет примерно таким: md5(mt_rand(100, 1000))) и это значение записывается в сессию...
2. Когда юзер отправляет форму, на сервере идёт проверка, ровна ли сессийная переменная значению поля hidden... Если ровна, то происходит дальнейшая инициализация\отправка и переходим к пункту 3..... Если не ровна то показываем соответственное сообщение....
3. Если две переменных были ровны, то после отправки данных можно(даже нужно) стереть сессийную переменную.... | |
|
|
|
|
|
|
|
для: nikita2206
(11.02.2009 в 19:32)
| | А почему она будет не равна? | |
|
|
|
|
|
|
|
для: Loki
(11.02.2009 в 21:28)
| | потому что если юзверь обновит страницу, на которой браузер отправляет данные с текстом, то, опятьже если, hidden поле будет равно сессийной переменной то добавление продолжится и из сессии удалится переменная.... | |
|
|
|
|
|
|
|
для: nikita2206
(12.02.2009 в 20:18)
| | Вы на мой вопрос не ответили | |
|
|
|