|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.01.2012, 13:10 | #1 |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Избежать повторного добавления записи
Здравствуйте!
У меня проблема с повторным добавлением записи. На странице строится форма, в которой есть скрытое поле "c_un" со значением 1. В начале страницы проверяется содержит ли элемент $_POST['c_un'] значение 1 и если да, то создается запись. В процедуре создания записи последняя строка присваивает этому элементу значение 0. В начале всего кода я проверяю какое значение имеет этот элемент массива POST. А оно всегда остается равным 1. Хотя форма уже не строится, просто выполняется запись. А по F5 ... создается такая же запись Пробывал unset() на весь массив - не помогло. Не подскажете как профессионально организуется механизм "избегания" повторного добавления? Как обнулить POST и все вернуть к изначальному состоянию? |
03.01.2012, 15:46 | #2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Ничего не понял, какие записи, куда? Повторного добавления чего, куда?
Давайте код ... но по-моему здесь уже изначально какой-то бредовый алгоритм |
03.01.2012, 16:13 | #3 |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Конечный фрагмент процедуры записи
PHP код:
PHP код:
|
03.01.2012, 16:16 | #4 | |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Цитата:
|
|
03.01.2012, 16:28 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Браузер кеширует данные суперглобальных массивов.
Это необходимо для корректного отображения ранее посещённых страниц при использовании кнопок "вперед"-"назад" в браузере. Соответственно - при использовании кнопки "обновить"(или F5) - браузер ещё раз отправляет данные из формы. Некоторые браузеры даже выдают предупреждения об этом при возвратах или обновлениях страниц(Firefox, Chrome): Изменить эти данные в кэше браузера можно только повторно отправив форму с новыми значениями (бесполезно пытаться изменить эти данные внутри скрипта - эти изменения не повлияют на кэш браузера). Простейший способ избавиться от этой проблемы - осуществить принудительный редирект страницы(после обработки данных формы) из самого скрипта средствами: PHP - функция header(); JS - команда document.location.href="_адрес_"; В этом случае кэш браузера будет очищен. |
03.01.2012, 17:14 | #6 | |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Цитата:
|
|
03.01.2012, 17:25 | #7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Можно в сессии флаг поставить - и с его помощью сообщать о результатах. |
|
03.01.2012, 17:54 | #8 |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Да,я и имел ввиду эту же страницу с передачей параметров. А флаг в сессии - Вы имеете ввиду элемент массива SESSION?
|
03.01.2012, 18:01 | #9 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
|
03.01.2012, 18:42 | #10 |
PHP
Пользователь
Регистрация: 28.03.2007
Сообщений: 70
|
Спасибо, Вы мне очень помогли
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
отловить события добавления записи в таблицу | SolidSnake | БД в Delphi | 5 | 05.11.2011 19:46 |
Задержка добавления записи в базу Access из Dephi | Zver | БД в Delphi | 11 | 16.05.2011 17:57 |
Триггер , который после добавления записи в одну таблицу редактирует запись другой таблицы | Rin | БД в Delphi | 7 | 18.12.2010 03:50 |
Узнать ID (автоинкримент) до добавления записи | Droid | БД в Delphi | 3 | 09.04.2010 09:52 |
Избежать повторного нажатия на кнопку | Shouldercannon | Общие вопросы Delphi | 4 | 27.04.2009 11:26 |