Допустим у вас есть скрипт вида:
<? if ($_REQUEST['action']=='add') { // записываем что-то в БД } >? <html> <body> <form method='post'> <input type='hidden' name='action' value='add'/> <input name='var1'/><br/> <input name='var2'/><br/> <input type='submit' value='Отправить'/> </form> </body> </html>
Если вы нажмете "отправить" и вернетесь на одну страницу назад после этого, то в браузере произойдет повторная отправка формы (часто это сопровождается предупреждением, но пользователи не обращают на них никакого внимания). Повторная отправка чаще всего приводит к дублированию введенных в форму данных в базе сайта (либо к другим, менее значимым событиям).
Как легко избежать этого? Очень просто, нужно доработать скрипт, дополнив его одной строкой:
header("Location: <путь к скрипту>");
Это строку следует записывать сразу после действия, например:
<? if ($_REQUEST['action']=='add') { // записываем что-то в БД header("Location: script.php"); } ?> <html> <body> <form method='post'> <input type='hidden' name='action' value='add'/> <input name='var1'/><br/> <input name='var2'/><br/> <input type='submit' value='Отправить'/> </form> </body> </html>
Т.е. после отправки формы, выполниться только действие, после чего страница перезагрузится уже без данных этой формы и кнопка "назад" браузера не будет повторять отправку.
Такой вот простой способ.
p.s. Важно помнить, что функция header() будет работать только в тех местах скрипта, где еще не начался вывод данных в поток браузера, т.е. до HTML-вставок, функций echo(), print() и т.п.