С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
DShcherbakov
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
1

Как устранить добавление записи в БД при каждом обновлении страницы

24.05.2016, 09:30. Просмотров 820. Ответов 7
Метки нет (Все метки)

Учу PHP\MySQL меньше месяца, отсюда не всегда понимаю, что пишу
Вопрос в след.: делаю на сайте гостевую книгу с выводом имеющихся в базе комментариев и вводом в нее новых.

Функция создания комментария:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
//$link подключение к бд
function guest_new($link, $date, $name, $comment){
    $name = trim($name);
    $comment = trim($comment);    
    if ($name == '') return false;
    if ($comment == '') return false;
    $t = "INSERT INTO guest (date, name, comment) VALUES ('%s','%s','%s')";   
    $query = sprintf($t, mysqli_real_escape_string($link, $date), mysqli_real_escape_string($link, $name), mysqli_real_escape_string($link, $comment));    
    $result = mysqli_query($link, $query);
    if (!$result) die(mysqli_error($link));
    return true;
}
Повешал на сабмит в форме:

PHP
1
2
3
4
5
6
if(isset($_POST['submit'])) {
        $date = date("Y-m-d H:i:s");
        $name = $_POST['name'];
        $comment = $_POST['comment'];
        guest_new($link, $date, $name, $comment);
    }
При каждом обновлении страницы происходит добавления комментария, как устранить это?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2016, 09:30
Ответы с готовыми решениями:

Как запретить добавление инфы в базу при обновлении страницы ?
Имеется 2 страницы : Страница добавления (страница 1 - "tulook_insert.htm") и...

Отправка формы при каждом обновлении страницы
Помогите пожалуйста разобраться. пишу простенький модуль для joomla обратной...

как сделать чтобы при при обновлении страницы (header('location .');) попадать на ту же позицию
Например у меня есть длинный список записей, под каждой записью кнопка удалить,...

Как уничтожить данные пост при обновлении страницы
Есть ли способ уничтожить пост данные, чтобы не предпринималась браузером...

Переадресация при обновлении страницы
Добрый день. Есть две страницы. На одной происходит указание имени и e-mail....

7
Jodah
Эксперт PHP
2855 / 2484 / 1059
Регистрация: 01.08.2012
Сообщений: 8,787
24.05.2016, 09:34 2
Цитата Сообщение от DShcherbakov Посмотреть сообщение
При каждом обновлении страницы
После того, как был добавлен комментарий? Или просто при каждом заходе на страницу?
0
DShcherbakov
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
24.05.2016, 09:43  [ТС] 3
Цитата Сообщение от Jodah Посмотреть сообщение
После того, как был добавлен комментарий? Или просто при каждом заходе на страницу?
После добавления комментария именно.
0
Jodah
Эксперт PHP
2855 / 2484 / 1059
Регистрация: 01.08.2012
Сообщений: 8,787
24.05.2016, 10:04 4
Лучший ответ Сообщение было отмечено DShcherbakov как решение

Решение

DShcherbakov, нажатие F5 приводит к повторной отправке формы. Как вариант, после добавления комментария делать редирект.

PHP
1
2
header('Location: /'); // Указать ссылку, куда должен попасть юзер после добавления комментария
die();
1
DShcherbakov
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
24.05.2016, 10:23  [ТС] 5
Цитата Сообщение от Jodah Посмотреть сообщение
DShcherbakov, нажатие F5 приводит к повторной отправке формы. Как вариант, после добавления комментария делать редирект.

PHP
1
2
header('Location: /'); // Указать ссылку, куда должен попасть юзер после добавления комментария
die();
После обновления страницы вновь созданный комментарий также продолжает плодиться. Нельзя всё же избежать повторной отправки формы. Ведь при первоначальном входе на страницу и при ее обновлении - ничего не происходит.

Добавлено через 10 минут
Warning: Cannot modify header information - headers already sent by (output started at
Если использовать вариант с редиректом - выскакивает данная ошибка. Погуглю ее. Может и такой выход пока сойдет.
0
СлаваВирус
469 / 397 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
24.05.2016, 10:26 6
Цитата Сообщение от DShcherbakov Посмотреть сообщение
Warning: Cannot modify header information - headers already sent by (output started at
Описание данной ошибки прикрепленно в разделе, где вы опубликовали этот пост...В кратце, заголовки должны отправляться до первого вывода на экран.
1
DShcherbakov
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
24.05.2016, 10:43  [ТС] 7
Цитата Сообщение от СлаваВирус Посмотреть сообщение
Описание данной ошибки прикрепленно в разделе, где вы опубликовали этот пост...В кратце, заголовки должны отправляться до первого вывода на экран.
Добавил в самом верху магическое ob_start(); и сделал редирект на эту же страницу. Комментарий сразу появляется, после повторного обновления - он не плодится. Результат достигнут, не знаю насколько это хорошо с точки зрения правильного кода.
0
Jodah
Эксперт PHP
2855 / 2484 / 1059
Регистрация: 01.08.2012
Сообщений: 8,787
24.05.2016, 10:57 8
DShcherbakov, не хорошо. Лучше вообще никакой вывод данных не делать до отправки заголовков.
1
24.05.2016, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 10:57

Отправка письма при обновлении страницы
Доброго времени суток. Нашел такую форму отправки номера телефона на почту,...

Сохранение перемнной при обновлении страницы
Есть комбобокс, при выборе значения оно заносится как новый элемент массива(а...

Исчезновение полей при обновлении страницы
Всем привет!) Даны 2 кнопки. Каждая из кнопок возвращает заданное количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru