2017-02-03 7 views
0

В настоящее время я программирую веб-сайт для школьного проекта, в котором я должен организовывать ежедневные расписания/отчеты.PHP продолжает вставлять при обновлении

Следующая ситуация: Я вставив следующий код в PHP:

$sqlinserttb = "INSERT INTO tagesberichte (`TbID`, `Tagesberichte`, `Datum`) VALUES ('DEFAULT', '".$tagesbericht."', '".$datum."');"; 

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

Что я пропустил?

+3

недостаточно кода для ответа на вопрос; но решение довольно просто. –

+0

Где вы получаете $ tagesbericht и $ datum? – AbraCadaver

+0

Это как раз то, что делает браузер, оно отправляет почтовую информацию, если вы обновите страницу сообщения. Чтобы пользователь не мог этого сделать, вы можете перенаправить на страницу снова по имени. Что-то вроде: 'header (" location: ". $ _ SERVER ['PHP_SELF']); exit(); ' –

ответ

0

Используйте header("location: <path to your self-submitting form>"); после того, как вы закончите установку, таким образом будет отображена новая форма и обновление не должно приводить к повторному представлению.

+0

Спасибо, это решило! – Reun

0

Из объяснения использования, которое вы объяснили, я понимаю, что у вас есть самостоятельная форма отправки (отправка на ту же страницу и запрос на обработку). Вы можете сохранить ваши переменные запроса в php sessions, а затем проверить входящие запросы с данными в сеансе (если сеанс существует). Если это так, тогда отобразите сообщение об ошибке, иначе вставьте, а затем установите сеанс с данными запроса.

+0

Да, я сам представляю форму, поэтому я просто начинаю сеанс, а затем помещаю все входы SQL, которые пользователь вводит, например, в текстовое поле в сеанс? – Reun

+0

Нет. Сначала вы проверяете, существует ли сеанс. Если существует, то сравните это с данными запроса. Если все одинаково, тогда покажите ошибку. В противном случае сделайте вкладку sql, а затем добавьте данные запроса в сеанс. – Rajesh

0

Если вы обновите URL-адрес, все соответствующие данные будут отправлены на php-скрипт, как и сам пользователь. Чтобы справиться с этим, вы могли: 1. Использовать метод post для отправки результата на сервер. Это не исключает ситуаций с обновлением страницы, но большинство браузеров спрашивают пользователя: «Вы действительно хотите отправить все данные на сервер?» 2. Используйте перенаправление после того, как скрипт php продолжит страницу с вашим вводом. В этом случае браузер не будет иметь данные для повторной отправки. Но пользователь может вернуться к предыдущей странице и снова отправить данные повторно. 3. Также вы могли бы предоставить некоторые переменные «meta http-equiv =» Cache-Control «...», чтобы срок действия страницы истек.

+0

Привет, я уже отправляю его через сообщение на сервер, и он спрашивает. Спасибо за подсказку с контролем кеша, посмотрим! – Reun