Отправить форму только один раз;не отправлять при обновлении страницы - PullRequest
0 голосов
/ 14 февраля 2012

Этот вопрос настолько простой, что я почти стесняюсь его задавать, но меня это озадачило. Я написал короткий фрагмент кода, чтобы объяснить это:

<form id="MyForm" method="post" enctype="multipart/form-data" >
    <input type="file" id="get_file" name="get_file" >
    <input type="submit" name="submitForm" value="Submit" >
</form>

<?php
    if (isset($_POST['submitForm'])) {
    echo "<script type='text/javascript'>alert('Selected')</script>";
} else {    
    echo "<script type='text/javascript'>alert('Not selected')</script>";
}
?>

Когда я загружаю эту страницу в первый раз, предупреждение говорит "Не выбран". Хорошо. Я отправляю форму, и в сообщении говорится «Выбрано». Также хорошо. Но когда я обновляю страницу, она все еще "Выбрана". Я не понимаю, почему утверждение «ЕСЛИ» позволяет этому случиться. Я хочу, чтобы моя форма отправляла данные один раз и больше не делала этого, пока мой пользователь не сделает это, а не каждый раз, когда страница обновляется.

Это похоже на вопрос, который задают нубы, когда им лень пользоваться Google, но я посмотрел (на этом сайте даже есть некоторые темы, которые как-то решают эту проблему, но никто не представил решение ). Я читал формы HTML, но все еще не понимаю.

Это все знают, кроме меня? Может кто-нибудь подсказать мне? Благодарю.

РЕДАКТИРОВАТЬ: Если кто-то когда-нибудь спотыкается об этой теме и нуждается в быстром и грязном исправлении, вот один, на который я только что наткнулся. Просто нажмите клавишу выбора еще раз, это легко сделать с помощью jQuery. Форма отправляется повторно, но все переменные формы очищаются. Может быть, не элегантно, но отлично работает.

1 Ответ

1 голос
/ 14 февраля 2012

Когда вы перезагружаете страницу, она повторно отправляет запрос POST, что означает, что submitForm=Submit является частью тела запроса.

Вы должны использовать Post / Redirect / Get шаблон, чтобы избежать этого.

...