Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
1

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

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

Author24 — интернет-сервис помощи студентам
Учу 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2016, 09:30
Ответы с готовыми решениями:

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

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

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

Почему у меня вылетает реклама в интернете,в стиме при каждом обновлении страницы и тому подобное?
Почему у меня вылетает реклама в интернете,в стиме при каждом обновлении страницы и тому...

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

Решение

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

PHP
1
2
header('Location: /'); // Указать ссылку, куда должен попасть юзер после добавления комментария
die();
1
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
471 / 399 / 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
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 23
24.05.2016, 10:43  [ТС] 7
Цитата Сообщение от СлаваВирус Посмотреть сообщение
Описание данной ошибки прикрепленно в разделе, где вы опубликовали этот пост...В кратце, заголовки должны отправляться до первого вывода на экран.
Добавил в самом верху магическое ob_start(); и сделал редирект на эту же страницу. Комментарий сразу появляется, после повторного обновления - он не плодится. Результат достигнут, не знаю насколько это хорошо с точки зрения правильного кода.
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
24.05.2016, 10:57 8
DShcherbakov, не хорошо. Лучше вообще никакой вывод данных не делать до отправки заголовков.
1
24.05.2016, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2016, 10:57
Помогаю со студенческими работами здесь

Устранить ошибки с репозиториями при обновлении
fp@fp-X555UB:~$ sudo apt-get update Игн:1 cdrom://Ubuntu 16.04.2 LTS _Xenial Xerus_ - Release...

Сохраняет данные в БД при каждом обновлении - как исправить?
Доброго времени суток! Столкнулся с такой проблемой, что данные из формы добавляются при каждом...

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

Как убрать последнее действие при обновлении страницы?!!
Здравствуйте уважаемые! Есть TextBox в который я ввожу текст и по нажатии на кнопку значение...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru