jabrik
@jabrik
⏱ - is not eternal

Как отменить повторную отправку формы? Знаю, что задавали уже вопрос, но они не подошли. Хелп?

Доброго времени суток.
У меня на сайте есть функция добавления комментариев, но после обновления страницы пользователем, выходит повторная отправка формы. И данные комментария дублируются в БД, а так же выводится дублежом. И так бесконечно, пока будешь обновлять страницу.

Вот сама форма:
<label for="username">Ваше имя</label>
<input type="text" readonly name="username" value="<?=$_COOKIE['login']?>" id="username" class="form-control">
<label for="mess">Сообщение</label>
<textarea name="mess" id="mess" class="form-control"></textarea>
<button type="submit" id="mess_send" class="btn btn-success mt-3 mb-5">Добавить комментарий</button>


Вот код:
if($_POST['username'] != '' && $_POST['mess'] != '') {
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
$mess = trim(filter_var($_POST['mess'], FILTER_SANITIZE_STRING));

$sql = 'INSERT INTO comments(name, mess, article_id) VALUES(?, ?, ?)';
$query = $pdo->prepare($sql);
$query->execute([$username, $mess, $_GET['id']]);
}
  • Вопрос задан
  • 348 просмотров
Решения вопроса 1
jabrik
@jabrik Автор вопроса
⏱ - is not eternal
Спасибо всем за ответы. Ошибка редиректа заключалась в том, что я перенаправляю не на самом начале php кода.
Решил вопрос с таким кодом, вставив его в начало кода:
<?php // on love
require_once 'mysql_connect.php';
$sql = 'SELECT * FROM `articles` ORDER BY `date` DESC';
$query = $pdo->query($sql);
while($row = $query->fetch(PDO::FETCH_OBJ)) {
  if($_POST['username'] != '' && $_POST['mess'] != '') {
    header("Location: /news.php?id=$row->id");
  } 
}
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gaisindanil
@gaisindanil
web developer
Самый простой способ.
После отправки формы сделайте редирект на ту же страницу.
А так много вариантов для решение этой проблемы) воспользуйтесь поиском.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы