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
Самый простой способ.
После отправки формы сделайте редирект на ту же страницу.
А так много вариантов для решение этой проблемы) воспользуйтесь поиском.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 230 000 ₽
ImageSpark Санкт-Петербург
от 60 000 ₽
FrozenEon Киев
от 1 500 до 3 000 $