Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383

Как бороться с F5?

24.03.2016, 19:13. Показов 6979. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть форма, нажав на кнопочку, происходит занесение в БД инфы. При нажатии на F5 или значок "обновить" вылазит окошко "Подтвердите повторную отправку формы". Как сделать так, чтобы инфа не записывалась снова в БД и не вылазило это окошко?

Добавлено через 2 минуты
И как организовать обновление страницы при нажатии на кнопку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2016, 19:13
Ответы с готовыми решениями:

как бороться с мошенничеством ?
Добрый День ! Затерзали меня смутные сомнения и я решил проверить вручную ссылки, которые я купил на Линкфеде. И вот на что я наткнулся...

Как бороться с неплатежами?
Ситуация - клиент заносит бабла за первый месяц. Вытаскиваем его на свет божий. Проходит месяц, приходим за деньгами за второй месяц. Тут...

как бороться с помехами?
Задачка. Напряжение меняется в пределах от 0.5 вольта до 0.3 Вольта. Необходимо соответственно ловить эти пределы. Вроде...

12
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
24.03.2016, 19:19
Редирект методом GET.
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
24.03.2016, 19:20
Лучший ответ Сообщение было отмечено евгенийпро как решение

Решение

PHP
1
header('Location: bla-bla-bla');
Все требования этой темы: Что означает предупреждение "headers already sent" действуют на функцию header
1
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
24.03.2016, 19:20
Лучший ответ Сообщение было отмечено евгенийпро как решение

Решение

После добавления данных в бд, делать редирект
PHP
1
header("Location:".$_SERVER['HTTP_REFERER']);
1
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
24.03.2016, 19:21
В самом верху после открытии сессии
PHP
1
2
3
4
5
6
if (isset($_POST['submit']))//отправка данных из формы
    {   
        $_SESSION['text'] = $_POST['text'];//записываете в сессию данные из формы
                 header("Location: ".$_SERVER["REQUEST_URI"]);// перенаправление на обработчик или куда нужно
                 exit;
    }
Далее делаете что надо с сессионными переменными.
1
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
24.03.2016, 19:22
LOL) Вон аш сколько вам вариантов накидали , выбирайте любой)
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
24.03.2016, 19:32  [ТС]
Ага, спасибо большое! А как можно сделать так, чтобы некое действие(допустим, редирект), наступало через некоторый промежуток времени?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
24.03.2016, 19:39
Какое такое действие? Вы о пользовательском редиректе говорите после показа страницы?
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
24.03.2016, 19:41
евгенийпро,
PHP
1
sleep(5);
Только зачем это?
1
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
24.03.2016, 19:48
Более распространенный вариант
PHP
1
 header("Refresh: 5; URL=http://site.com/");
1
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
24.03.2016, 19:53  [ТС]
Нет.При нажатии на кнопку просто хочу на 5 сек сделать надпись "Успешно" и обновить.

Добавлено через 18 секунд
Еще раз спасибо всем!
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
25.03.2016, 22:57
Если редирект нежелателен, можно защищаться как от CSRF выдавая на действие токен. После действия выдаётся новый, а клиент будет долбиться со старым и не пройдёт проверку
0
 Аватар для SanchO-SEK
61 / 23 / 7
Регистрация: 22.05.2012
Сообщений: 89
26.03.2016, 02:40
Для меня вот этот вопрос всегда был проблемой с самого начала изучения PHP! Вариантов решения слышал много, но делал "по-своему" примерно так. Если это отправка регистрационных данных, после чего создается пользователь, при его создании была проверка E-mail на уникальность и если пользователь обновлял страницу новая учетная запись не создавалась потому что E-mail уже был занят.
Если нужно было принять и сохранить сообщение в теме форума, после сохранения сообщения я сохранял в сессию ID темы, время добавления сообщения и флаг того, что сообщение добавилось. При добавлении сообщения проверялся флаг добавления и если он не сброшен - сообщение не добавлялось; и если сообщение было добавлено не более минуты назад - реакция была как на спам! После перехода на любую другую страницу сайта флаг добавления сообщения обнулялся.
Как-то так. Пример показывать не буду. Самое главное алгоритм, а реализовать его вопрос попроще... :-)

Добавлено через 2 минуты
Редирект - это да, но бывает так (в том же Chrome), что он предложит обновить страницу для повторной отправки данных, если нажать "Назад". Так что данные о выполнении действия нужно где-то хранить и проверять, о чем я сказал в предыдущем посте...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2016, 02:40
Помогаю со студенческими работами здесь

как бороться с internet.com
у меня проблема, мозилла еле работает, сайты не открываются, все переходит на страницу internet.com, что делать?

Как бороться с *.ldb?
На сервере стал получаться файл *.ldb Он не дает мне загружать на сервер изменения в БД Access. Исчезает после перегрузки сервера, но...

Как бороться с гогой?
enum A{a...}; class B { public: bool m(A x); }; void f(const B &b) { if (b.m(a)) // Ругается на эту строчку, говорит...

Как бороться с DDos?
Заметил, что CPU начал активно работать, касперский начал флудить своими сообщениями о DOS на порт который использовал "Игровой центр...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru