Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
Добрый всем день. вопрос следующий: вот есть элементарный скриптец Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. работает понятно как : пользователь вводит в поле значение , по кнопке OK происходит сабмит, значение прописывается в базу. Всё хокей, но как я должен модифицировать скрипт , чтобы предотвратить insert после обновления странички , то есть при нажатия Ctrl + r или Ctrl + F5 . Даже не знаю как подступиться к проблеме. То есть если мы введём скажем в наше поле значение Репка, нажмем сабмит, то это значени пропишется в базу. А потом если нажимать Ctrl + r или trl + F5 Репка будет прописывать всякий раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 13:56 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
andron81, header('Location'); а также можно сделать токен для формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 14:08 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
andron81, Здесь, чтобы предотвратить двойную запись на до пользоваться CSRF Ну, а в более общем случае браузер всегда спрашивает, нужно ли отправить данные повторно. Даже IE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 14:11 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
r u header('Location'); а также можно сделать токен для формы. заставлять браузер грузиться дважды - немного накладно ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 14:14 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
Андрей Седоченкозаставлять браузер грузиться дважды чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 14:17 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
Андрей Седоченкоandron81, Здесь, чтобы предотвратить двойную запись на до пользоваться CSRF А поподробнее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2014, 14:23 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
r uandron81, header('Location'); а также можно сделать токен для формы. я так понимаю это 2 разных способа. поясните поподробнее плз о каждом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 10:12 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
andron81, Вариантов уйма: 1. обычный location (заставляя браузер перегрузить страницу, потому обновление на ctrl+f5 не будет отправлять форму снова). 2. пишем в скрытое поле формы некое ("достаточно" уникальное) значение и переносим его в сессию. при сохранении данных удаляем из сессии значение равное значению скрытого поля. Итак, если в какой-то момент оказывается ,что в сессии нету нужного значения, значит мы его уже удалили, а значит форма пытается пересохраниться. Не круть в методе то, что даже когда форма сохраняться больше не будет, браузер всёровно будет спрашивать "отправить форму ещё раз?" 3. Как по мне с появлением удобного интерфейса для работы по ajax (и фреймворка jquery) это самый удобный способ: сохраняем данные через ajax, если сохранение успешное - перенаправляем на нужную страницу результата (только уже не отправляя никаких форм разумеется). Если же операция записи по некой причине провалилась - выводим соответствующую инфу пользователю. Недостаток - сложность отправки файлов, так как они отправляются только в формах и вручную небезопасный двоичный поток на сервер передать нельзя. Не знаю, может сейчас уже решили это (давно не занимался такими изворотами), но раньше это решалось просто отправкой той самой формы через iframe. Чаще всего используют первый и третий вариант. Второй мне лично не нравится, просто видел такой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 14:09 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
Програмёрandron81, Вариантов уйма: 1. обычный location (заставляя браузер перегрузить страницу, потому обновление на ctrl+f5 не будет отправлять форму снова). А понятно: я инсерчу и делаю header('Location'); . Недостаков я прямо-таки и не вижу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 15:11 |
|
||
|
как бороться с обновлением страницы
|
|||
|---|---|---|---|
|
#18+
andron81, в этом методе их (недостатков) в принципе и нету :) Ну разве только время ожидания возрастает вдвое + надо позаботиться о том, что бы при отправке location больше ничего не было выведено... иначе возможен вариант, что пользователь увидит то, что ему видеть не положено (ну или просто что ему видеть не хотелось бы). Первый момент не значителен (не думаю что юзер заметит разницу, если в силу пинга время ожидания составит не 100-200мс, а 200-400мс). А второй, скорее высосан из пальца (но почему-то, видимо из-за полного невежества некоторых особей, в некоторых источниках это пишется с "!!!") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 19:06 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38584003&tid=1462961]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 283ms |
| total: | 449ms |

| 0 / 0 |
