Запретить пользователю использовать кнопку «Назад» с предупреждением или отключить любую вставку

У меня есть форма в page1.php которая page1.php на page2.php откуда данные из формы в page1.php вставляются в базу данных. после успешной вставки, page2.php отображает сообщение и дает ссылку для перехода на третью страницу.

Проблема заключается в том, когда пользователь после вставки обращается к кнопке «Назад» браузера и нажимает кнопку отправки формы, вставка выполняется снова.

Есть ли способ, чтобы после одной вставки при нажатии кнопки «Назад» было отображено сообщение, показывающее, что посещение кнопки «Назад» не разрешено? Или, если это разрешено, никакая вставка не будет выполняться при нажатии кнопки отправки формы?

ИЗМЕНИТЬ ДОЛЖНО ДОБАВИТЬ ЭТУ ЧАСТЬ:

okk позвольте мне рассказать подробно. речь идет о конце администратора. администратор дает ввод текста описания для разных продуктов. Он дает входные данные от page1.php, и сообщение показано на стр. 2.php, что описание было вставлено в db. то после сообщения появляется другая форма. Он просто спрашивает, хочет ли администратор сделать больше с текстом описания. Если «да», а затем нажав кнопку отправки формы, он попадает на страницу, откуда через некоторые страницы он снова переводится на страницу1.php (на этот раз для другого продукта), оттуда на страницу 2.php и т. Д. , btw я мог бы использовать обычную ссылку на страницу вместо ссылки на кнопку формы ниже сообщения на странице2.php

Проблема в том, что, когда администратор находится на странице2.php и обращается к кнопке «Назад», он возвращается к странице1.php и оттуда, если он нажимает кнопку отправки формы, данные вставляются во второй раз в новую строку.

u может предложить использовать «IGNORE» с командой «INSERT», но в строке есть другие столбцы, которые могут не совпадать с символами другого столбца, тогда как столбцы описания (админы вставляют текстовые данные для этого столбца) могут совпадать.

1) Не применимо ли в этом случае игнорировать?

2) Каким должно быть решение, если дублирующая запись разрешена для базы данных сайта?

благодаря

надеюсь, что все это ясно.

Вместо ссылки на третью страницу, перенаправление на тот же URI
это довольно удобный метод POST / Redirect / GET :
вот краткий пример:

 <?php if ($_SERVER['REQUEST_METHOD']=='POST') { $err = array(); //performing all validations and raising corresponding errors if (empty($_POST['name'])) $err[] = "Username field is required"; if (empty($_POST['text'])) $err[] = "Comments field is required"; if (!$err) { //if no errors - saving data and redirect header("Location: ".$_SERVER['PHP_SELF']); exit; } else { // all field values should be escaped according to HTML standard foreach ($_POST as $key => $val) { $form[$key] = htmlspecialchars($val); } } } else { $form['name'] = $form['comments'] = ''; } include 'form.tpl.php'; ?> 

Здесь вы можете увидеть еще один пример, сжатый, но мощный: разделение логики / стиля на PHP должным образом
это полное решение для отображения, добавления и редактирования содержимого базы данных именно для целей администрирования.

Вы не должны отображать свое сообщение на page2.php . page2.php .

Вместо этого:

  • page2.php должен обрабатывать данные
  • когда данные были сохранены, page2.php должен перенаправить на page2.php
  • И это только confirmation.php который будет отображать сообщение.

Для получения дополнительной информации ознакомьтесь с шаблоном Post / Redirect / Get .

Редактировать после комментария: но обратите внимание, что в любом случае вы никогда не сможете предотвратить повторное отправку формы, если он действительно хочет …

Единственное решение, которое вы получите, – это когда вы отправляете форму, чтобы проверить свою базу данных, если уже имеющиеся данные уже существуют, и если это произойдет, откажитесь вставить ее снова.

Конечно, если судья меняет даже одну букву на своем входе, это не будут те же данные больше …