[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обновление и глобальные переменные
kuzroman
Подскажите. Есть такой запрос

 
if (isset($_POST['koment'])) {
$koments = $_POST['koment']; if ($koments == '') {unset($koments); }
$login = $_SESSION['login'];
if ( isset($koments) ) {
$result = mysql_query ("INSERT INTO coments ( koments,id_blog, login )
VALUES ( '
$koments', '$id_blog', '$login' ) ");
}


Теперь собственно вопрос:
После обновления (F5) запрос обрабатывается вновь и вновь идет добавелние (дублирование) информации в базе.
Как от этого избавиться?
Добавлял unset( $_POST['koment'] ) ; unset ($koments) ; после sql запроса
но видимо глобальная переменная хранится в памяти и после обновления снова всплывает.
Как быть?



Спустя 1 минута, 42 секунды (2.08.2010 - 11:01) Lenarfate написал(а):

if ( isset($koments) ) {
$result = mysql_query ("INSERT INTO coments ( koments,id_blog, login )
VALUES ( '
$koments', '$id_blog', '$login' ) ");

header('location: '. $_SERVER['PHP_SELF']);
exit();
}

Спустя 52 секунды (2.08.2010 - 11:02) Ice написал(а):
header("Location: {$_SERVER['PHP_SELF']}");

Спустя 4 минуты, 13 секунд (2.08.2010 - 11:06) Lenarfate написал(а):
Ice
это шаблонизатор? не путай людей

Спустя 43 минуты, 58 секунд (2.08.2010 - 11:50) kuzroman написал(а):
Уважаемый Lenarfate.
Странно, но после того как вставляю ваш фрагмент кода в указанное вами место выдаеся ошибка:

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\topitv\interesno.php:20) in Z:\home\localhost\www\topitv\interesno.php on line 123

Спустя 1 минута, 36 секунд (2.08.2010 - 11:52) Lenarfate написал(а):

Спустя 1 час, 5 минут, 15 секунд (2.08.2010 - 12:57) arvitaly написал(а):
<script>
document.location.href="<?php echo $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; ?>";
</
script>

Спустя 7 минут, 51 секунда (2.08.2010 - 13:05) kuzroman написал(а):
Цитата (arvitaly @ 2.08.2010 - 09:57)
<script>
document.location.href="<?php echo $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; ?>";
</
script>

Уважаемый arvitaly

Если вставляю ваш код то переход осуществляется на

http://localhost/topitv/localhost/topitv/i...og=1&metka=avto

соответственно дублируется localhost/topitv
и переход осуществляется на несуществующую страницу

Спустя 1 минута, 29 секунд (2.08.2010 - 13:06) Ice написал(а):
Цитата (Lenarfate @ 2.08.2010 - 12:06)
это шаблонизатор? не путай людей

Ты чё сеня пьяный что ли? biggrin.gif
Это экранирование переменных - конкатенацию лень писать.

Спустя 1 минута, 32 секунды (2.08.2010 - 13:08) Lenarfate написал(а):
меня от жары разнесло)сплю на ходу biggrin.gif

Спустя 1 минута (2.08.2010 - 13:09) Ice написал(а):
Да от жары всех уже второй месяц разносит пора привыкать biggrin.gif

@ ТопикСтартер
Вобщем, если у Вас разнесены представление и модель приложения, Вам будет легче. Если же нет - Ваша задача сделать так: мухи отдельно, суп - отдельно. Мухи - это представлеие, суп - обработчик. Обработчик должен находиться до отработки представления, чтобы ошибки о неудачной отправке заголовков не возникало.

Спустя 10 минут, 42 секунды (2.08.2010 - 13:20) kuzroman написал(а):
Ice - у меня обработчик внутри страницы. Если это неправильно то я переделаю и разделю их.

Спустя 1 минута, 37 секунд (2.08.2010 - 13:21) kuzroman написал(а):
Но неужели нет способа уничтожить глобальные переменные _GET && _POST ?

Спустя 4 минуты, 8 секунд (2.08.2010 - 13:25) Ice написал(а):
пусть он будет внутри. ГЛАВНОЕ, чтобы логика представления (ХТМЛ и прочее) не была смешана с логикой модели (где происходят всяческая работа с данными).

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

Спустя 56 секунд (2.08.2010 - 13:26) Ice написал(а):
Цитата (kuzroman @ 2.08.2010 - 14:21)
Но неужели нет способа уничтожить глобальные переменные _GET && _POST ?

Их уничтожает как раз тот самый хедер, когда страница перезапрашивается.
Понимаю, что возможно что-то придется переделать, но лучше это переделать сейчас и запомнить правильную структуру приложения, чтобы ОНА в памяти отложилась, а не КАК ПОПАЛО. В дальнейшем от этого будет только лучше.

Спустя 24 минуты, 29 секунд (2.08.2010 - 13:51) arvitaly написал(а):
ах да забыл http://
<script>
document.location.href="http://<?php echo $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; ?>";
</
script>


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.