Почему дублируется записть

kav78

Новичок
Почему дублируется записть

Доброго времени знатоки, решаю данный вопрос второй день.
В форме ввода вводится текст, который должен лечь в мускул.
PHP:
$sqlr="INSERT INTO tabl 
VALUES(NULL,'$zapis','$date')";
mysql_query($sqlr);
header("Location: index.php");
exit;
}
Все работает ОК, но если обновить страницу, то запись повторяется. Почему, где ошибка?
 

kav78

Новичок
Фанат
Все тоже самое, только кол-во повторных сообщений увеличивается
 

Фанат

oncle terrible
Команда форума
и при обновлении страницы никаких сообщений не выдаётся?
 

Фанат

oncle terrible
Команда форума
а что видно в адресной строке?
до отправки формы и после отправки?
 

kav78

Новичок
Фанат
до: index.php
после: index.php

-~{}~ 24.03.07 15:52:

Фанат
Форма+запись осуществляется в одном скрипте!
Пробовал передвавать данные другому скрипту, таже ерунда.
вот более расширенный код index.php:
PHP:
<?
...
?>
<form name="form" action="index.php" method="post">
<input name="zapis" type="text" />
<input type="hidden" value="1" name="s"/>
<input type="submit" value="Добавить" name="submit"/>
</form>
....
<?
if ($s=="1"){
$sqlr="INSERT INTO tabl VALUES(NULL,'$zapis','$date')";
mysql_query($sqlr);
header("Location: index.php");
exit;
}
...
?>
 

Фанат

oncle terrible
Команда форума
слово такое в твоем скрипте.
латинскими буквами
 

Фанат

oncle terrible
Команда форума
попробуй к урлу добавить параметр, к примеру, index.php?added
 

aixrus

Новичок
надо делать так:
Код:
.....
if ($_SERVER["REQUEST_METHOD"]=="POST")
{
    
   ......

    if ($s=="1"){

       $sqlr="INSERT INTO tabl VALUES(NULL,'$zapis','$date')";
       mysql_query($sqlr); 

       header("HTTP/1.1 302 Moved Temporarily");
       header("Location: [url]http://полный URL до  index.php[/url]");
       die;
     }
}
.....
 

aixrus

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

а значит при каждом вызове происходит вставка записей в БД
 

Апокалипсис

тех дир matras.ru
При чем тут это?
Он делает так, пишет в базу переадресовывает и делает дие.
Если переадресация не удается естственно при нажатии кнопки "Обновить"->"Повторить" скрипт повторно напишет в базу!
 

aixrus

Новичок
если все проверки есть, и работают как надо - то нажатие кнопки "Обновить" - ошибка человека, а не программы

единственный совет тогда, программный поиск на повтор:
1. ввести доп. поле с ip адресом отправителя
2. перед вставкой считывать последнюю запись для данного ip адреса
3. сравнить содержимое или по их md5 сумме на предмет идентичности, и если отличаются, только тогда вставлять новую, либо писать ошибку клиенту - "повторный ввод"


думаю других вариантов тут уже не придумаешь
 
Сверху