2009-06-05 3 views
1

Я пишу код для вставки данных в mysql на той же странице, откуда я извлекаю данные методом post. он работает нормально, но когда я обновляю страницу, он снова вставит. мой вопрос в том, как прекратить перевыполнение запроса вставки при обновлении страницывведите запрос на той же странице, с которой передаются данные.

ответ

1

Это связано с тем, что данные POST отправляются снова при обновлении. Ваш браузер должен дать вам предупреждение, что он это делает. Если вы не получите это предупреждение, вы можете использовать GET вместо POST, что не является хорошей идеей для действий, которые изменяют или вставляют данные.

Проверьте форму имеет этот атрибут:

<form method="post"> 

Если вы хотите, чтобы избежать его полностью, просто перенаправлять браузер после поста обратно.

<?php 
if ($_POST) { 
    // insert into database 
    header("location: thisPage.php"); 
    // don't bother with die() here 
} 

Поскольку редирект не используется в целях безопасности, и вы просто перенаправляет обратно на ту же страницу, что это на самом деле не нужно die() потом.

0

Добавить переменную в вашу форму, а затем во время сохранения сбросить ее значение.

if(isset($_POST['save'])) 
{ //do your saving 
    $save="";  
} 
1

Для решения этой проблемы вы, вероятно, захотите использовать Post-Redirect-Get pattern. Хорошо, что вы используете POST для отправки данных на ваш сервер. После того, как вы внесете необходимые изменения, перенаправьте своего пользователя на страницу, которую вы хотите увидеть, с простым заголовком перенаправления. Это НЕ будет прерывать кнопку «Назад», и щелчок по ней вернет пользователя обратно в форму, не отправляя данные снова.

Смежные вопросы