У меня простая форма php, вот так:
<?php if(isset($_POST['myform'])) // email... else // display form
проблема в том, что если я обновляю страницу после отправки формы, она будет отправлена дважды. Как я могу предотвратить это?
Вы должны выполнить REDIRECT на странице с сообщением о том, что данные были вставлены … и кнопку назад, чтобы вернуться в форму еще раз (если вы хотите) …
Для перенаправления с использованием PHP
используйте функцию header
:
header('Location: http://www.example.com/');
Выполните перенаправление после того, как данные будут вставлены на страницу подтверждения (может быть сделано с помощью заголовка () , что должно очистить данные POST и разрешить обновление без дублирования содержимого.
В случае, если пользователь имеет задержку, и он несколько раз нажимает кнопку отправки, то, возможно, использует механизм клиентской стороны, используйте js, чтобы отключить кнопку отправки после ее нажатия. но должен будет отобразить сообщение, в котором говорилось примерно что-то вроде: «отправка сообщения … если нет ответа, перезагрузите страницу и повторите попытку».
session_start(); if (!$_SESSION['REQUEST_TYPE_USER_ID'] == $_POST) { //your code //after the success process $_SESSION['REQUEST_TYPE_USER_ID'] = $_POST; } else { // request duplicated }