Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Защита POST от обновления страницы
SnowWind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 349
Пользователь №: 23379
На форуме: 6 лет, 4 месяца, 2 дня
Карма:




Всем привет.

Форма отправляет данные в скрипт
Скрипт обрабатывает и записывает в базу
После чего выводит сообщение об обновлённых данных и ссылку для перехода на новую страницу в виде формы

$massage = '<h3>Начальные параметры установлены</h3>
<p>Ловкость - '
.$dexterity.'</p>
<p>Сила - '
.$power.'</p>
<p>Навык - '
.$skill.'</p>
<form action="'
.$link.'" method="post">
<input type="submit" value="Старт">
</form>'
;


Что бы защитить БД от повторного обновления, решил сделать переадресацию
header("Location: ".$_SERVER['REQUEST_URI']);
die();


Но в этом случае сообщение об обновлённых значениях не выводится, как его передать методом post в момент переадресации?

Пробовал get
header("Location: ".$_SERVER['REQUEST_URI']."?massage=".$massage);

но он не отправляет столько символов
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167




Цитата (SnowWind @ 3.04.2016 - 11:18)
как его передать методом post в момент переадресации?

используй сессию


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (SnowWind @ 3.04.2016 - 12:18)
Но в этом случае сообщение об обновлённых значениях не выводится, как его передать методом post в момент переадресации?

Пробовал get

header("Location: ".$_SERVER['REQUEST_URI']."?massage=".$massage);

Используй header( 'Refresh: .....' ) http://php.net/manual/ru/function.header.php (ищи по слову refresh). Указав время до обновления, ты имеешь возможность вывести сообщение и даешь возможность человеку прочитать его. Можно также сделать ссылку для перехода, чтобы можно было ее кликнуть, не дожидаясь автоматического перехода. Можно также сделать на JS таймер обратного отсчета... Короче говоря, можно "сделать конфетку" smile.gif
Кстати говоря, именно эта методика используется на этом форуме при отправке или редактировании сообщений.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167




Цитата (sergeiss @ 3.04.2016 - 12:13)
Кстати говоря, именно эта методика используется на этом форуме

ага, и жутко бесит


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SnowWind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 349
Пользователь №: 23379
На форуме: 6 лет, 4 месяца, 2 дня
Карма:




Нет header( 'Refresh: .....' ) не подходит, т.к всё равно пользователь может нажимать f5 и данные будут переопределяться
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (SnowWind @ 3.04.2016 - 13:46)
Нет header( 'Refresh: .....' ) не подходит, т.к всё равно пользователь может нажимать f5 и данные будут переопределяться

Значит, ты неправильно используешь эту фичу. Эта хрень как раз позволяет избежать проблем с обновлением.
Показывай свой код, использующий refresh, будем думу думать smile.gif

Цитата (Valick @ 3.04.2016 - 13:24)
ага, и жутко бесит

Чем именно бесит?


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SnowWind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 349
Пользователь №: 23379
На форуме: 6 лет, 4 месяца, 2 дня
Карма:




if (isset($start))
{

// Запись в базу

$massage = '<h3>Начальные параметры установлены</h3>
<p>Ловкость - '
.$dexterity.'</p>
<p>Сила - '
.$power.'</p>
<p>Навык - '
.$skill.'</p>
<form action="'
.$link.'" method="post">
<input type="submit" value="Старт">
</form>'
;
echo $massage;
header("refresh:5;url==".$link);
die();
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167




Цитата (sergeiss @ 3.04.2016 - 13:10)
Чем именно бесит?

излишнее переморгивание страниц

SnowWind, есть такая штука как логирование, писать лог можно не только ошибок, но и других действий. Нет ничего проще при перенаправлении передать параметром гет статус операции и достать из лога нужную информацию для отображения на странице.
А еще спецом для таких раздражительных как я был придуман AJAX и тому подобные технологии.
___
будь моя воля, я бы за рефреш расстреливал бы деревянными пулями.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (SnowWind @ 3.04.2016 - 14:28)
header("refresh:5;url==".$link);

Если ты внимательно посмотришь по ссылке на хэлп, что я дал, то увидишь, что там не 2 знака равно, а один.

Цитата (Valick @ 3.04.2016 - 15:15)
Цитата (sergeiss @ 3.04.2016 - 13:10)
Чем именно бесит?

излишнее переморгивание страниц

Ну дык... Если правильно использовать, то не будет моргать, а будет что-нибудь красивое показывать smile.gif Опять же, можно по ссылке кликнуть - если её предоставили, естественно.

Цитата (Valick @ 3.04.2016 - 15:15)
А еще спецом для таких раздражительных как я был придуман AJAX и тому подобные технологии.

Для начала человек пусть поймет, как без аякса сделать. С ним потом разобраться успеет.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SnowWind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 349
Пользователь №: 23379
На форуме: 6 лет, 4 месяца, 2 дня
Карма:




Хорошо
header("refresh:5;url=".$link);

так тоже, до переадресации, если нажимать f5, то данные обновляются
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 21 день
Карма: 111




Вообще все просто

Сессия и в ней например массив сообщений

ты можешь туда положить и сделать Header( Location )
на целевой странице достаешь все сообщения и стираешь их сразу на целевой странице
в итоге у тебя защита от F5 и выведено сообщение =)


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (SnowWind @ 4.04.2016 - 10:54)
так тоже, до переадресации, если нажимать f5, то данные обновляются

Насколько часта ситуация, что юзер нажимает кнопку "Отправить" и тут же, в течение нескольких секунд, жмякает Ф5? Если таких много, то используй сессию или аякс smile.gif Но мне что-то так кажется, что это чрезвычайно редкая ситуация.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SnowWind  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 349
Пользователь №: 23379
На форуме: 6 лет, 4 месяца, 2 дня
Карма:




в той специфике где будет работать скрипт, только юзер узнает об этом, будет жмакать до посинения smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса