Как вы очищаете POST если нужно работать в пределах 1 страницы?

Привет коллеги, есть вопрос как вы очищаете POST-запрос если форма ссылается на ту же страницу где и находится,
И так мы имеем,
- Форму с 1 полем
- Запись в БД с данными с этого поля
- POST запрос что отправляет данные с формы, в переменную с последующей записью в БД

При простом рефреше страницы POST отправляется заново и получаем повторную запись в БД и так постоянно,
в следствие чего имеем бд с кучей одинаковых записей, и допустим если я захочу выводить историю последних записей из-за этих рефрешей будет одна запись)

unset($POST); - не помогает, искал много инфы, но так и не нашел как грамотно чистить этот POST -_-

Поделитель плз, кто сталкивался с этим.

PHP
$link = $_POST ['link']; // Переносим ссылку в переменную

//Записываем в БД
if (!empty($link))
{
    $query ="INSERT INTO linked (id, link)" . "VALUES('' , '".$link."');";
} 
        mysql_query($query);
         $query = "SELECT * FROM `linked` ORDER BY `id` DESC LIMIT 1";
            $res = mysql_query($query);
                $row = mysql_fetch_array($res);

?>

HTML
<form method="post" id="form_id" action="admin.php">
          <input type="text"  id="link" name="link" placeholder="http://site.ru" > 
          <input type="submit" value="Обновить ссылку" /> 
          </form>
  • Вопрос задан
  • 236 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Редирект на ту-же страницу.
header('Location: https://example.com/the/same/page');


Ваш unset удаляет данные которые пришли с POST запросом, но это ни на что не влияет, т.к. повторную отправку делает браузер.
Ответ написан
@mletov
1) Апдейтить все через ajax
2) Если страница с полным постбэком, то делать редирект.
А если юзеру приспичит понажимать кнопку "Назад", то проверять referer
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Camaro67
Помог? - жми "Отметить решением"
Делайте редирект на туже страницу.

unset($POST); - не помогает, искал много инфы, но так и не нашел как грамотно чистить этот POST

Вы очищаете на сервере, а данные при обновлении берутся со стороны клиента т.е. с браузера.
Ответ написан
Комментировать
@kuftachev
Про редирект все написали, да, это стандартно...

Но есть ещё вопрос, на сколько валидные эти одинаковые записи? Может там не хватает ключей на уникальность? Именно на уровне доменного слоя.

Самый простой пример, уникальный email пользователя в базе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы