Как отличить отправку формы методом POST от обновления страницы в браузере, при котом повторно отправляются те же самые данные?
Просто в нормальном коде такой хрени не происходит. Даже если так случилось что отправка у вас методом пост, ну допустим надо так, то при обработке запроса на сервере делается редирект методом гет, по этому при перезагрузке ничего не отправляется повторно.
Согласен с ThunderCat , но если это для тебя принципиально, можно кэшировать поступающие данные, например записывать в обычный текстовый файл и сравнивать поступающий $_POST-массив с уже существующими данными. Если совпадение стопроцентное, убиваешь код, если нет, обрабатываешь запрос.