<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру

PHP и MySQL с Нуля до Гуру

Данный курс - это более 20-ти часов видеоуроков по изучению PHP и MySQL. Ключевой момент курса - это создание движка для сайта с нуля. Каждая строчка комментируется. Практически для каждого урока имеются упражнения. Причём данные упражнения направлены не только на закрепление материала, но и на реализацию реальных задач, встающих перед Web-разработчиками при создании сайтов. После курса Вы сможете без проблем создавать движки для любых сайтов.

Также почти к каждому уроку идут упражнения для закрепления материала.

Просмотрев курс и выполнив упражнения, Вы сможете без проблем создавать функциональные движки для самых различных сайтов.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Повторное добавление комментария при нажатии на кнопке обновить страницу.
26.03.2014 10:42:40 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #1
greg77

greg77

Новичок

Новичок

Дата регистрации:
03.12.2012 15:08:12

Сообщений: 4

Взяв за основу курс Михаила о создании простого сайта на РНР, в качестве практики, мною написан код добавления комментариев к статье на локальном сервере. Статья и комментарии расположены на одной и той же странице. В принципе все работает, комментарии добавляются и отображаются корректно. Проблема в том, что происходит повторное добавление того же самого комментария при обновлении страницы если нажать на кнопку "Обновить текущую страницу" в браузере без добавления в поля формы нового(какого-либо) комментария. При этом выскакивает окно с текстом "... , Firefox должен отправить информацию, которая повторит предыдущую..." и если продолжить и в появившемся окне нажать на кнопку "Отправить заново", - добавится прежний комментарий несмотря на то, что, как я сказал, поля формы оставались пустыми.
В то же время, при попытке решить проблему приведенным ниже способом и сделать редирект на ту же страницу, то после отсылки данных в БД таким образом:
if ('если добавился комментарий нормально') {
header('Location: .../samepage_name.php');
exit ();
}
появляется следующий текст:
Warning: Cannot modify header information - headers already sent by (output started at S:\home\localhost\www\shop\views\layouts\main.php:13) in S:\home\localhost\www\shop\views\pages\karc_templ.php on line 36
Конструкция сайта проста:
index.php:
include //подключаем главную страницу сайта - main.php
main.php:
include //подключаем хедер
include //подключаем нужную страницу
include //подключаем футер
karc_templ.php - шаблон на котором находится форма и подключаемый к странице karc.php;
karc.php - страница подключаемая в нужное время к странице main.php
Подскажите пожалуйста каким образом решается данная проблема в принципе, и, если можно - приведите код(ы) решения. Если для решения вопроса нужно представить скрипт(ы) - пожалуйста напишите.
Профиль Ответить
27.03.2014 11:42:45 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #2
mischa.samolkaev

mischa.samolkaev

Продвинутый

Продвинутый

Дата регистрации:
12.07.2012 13:00:02

Сообщений: 74

Насколько я понял, скрипт добавления комментариев находится в одном файле с самой статьей, в которой эти комментарии добавляются.
Решения 2:
1.Разделить эти файлы. В одном отправка, в другом обработка.
2.Очищать $_REQUEST в начале работы:

<?php
unset($_REQUEST);
//Дальше ваш код
//|
//|
//|
//|
//|
?>
Профиль Ответить
27.03.2014 15:58:49 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #3
greg77

greg77

Новичок

Новичок

Дата регистрации:
03.12.2012 15:08:12

Сообщений: 4

Большое спасибо за желание помочь!
Попробовал оба метода - опять то же самое...

Привожу то, что выскакивает после нажатия на иконку "обновить страницу":
"Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая повторит любое ранее произведенное действие (например, запрос на поиск или онлайн-покупка)."

Дорогие друзья!
Ну что, так и не поможете решить эту, для кого-то очень простую, а для меня, пока что, неразрешимую задачу?...
Профиль Ответить
30.03.2014 00:46:54 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #4
alexandrdante

alexandrdante

Модератор

Модератор

Дата регистрации:
15.11.2013 15:33:40

Сообщений: 207

открыть сессию - закрыть сессию.
уничтожить содержание после публикации

Всё,вроде,просто
Профиль Ответить
30.03.2014 12:34:04 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #5
greg77

greg77

Новичок

Новичок

Дата регистрации:
03.12.2012 15:08:12

Сообщений: 4

Спасибо за отклик, но, если не затруднит, не подскажете - где это следует сделать  (в каком месте и в каком файле)? В том файле где пропсана форма и отправлен запрос на добавление коммента (а это файл-шаблон) или в том файле в котором вызывается/подключается файл-шаблон? Спрашиваю потому, что справочниках по сессиям написано: не выводите данные в браузер до использования функции session_start(), иначе она выдаст ошибку. Но ведь мне же нужно, в любом случае, вывести форму, как же тогда тут быть?

И еще - я конечно же обязательно поробую дополнить скрипт согласно Вашей рекомендации и,  правильно ли я понял, что Вы имели ввиду уничтожение всех данных в $_SESSION...?
Профиль Ответить
03.04.2014 17:09:10 Повторное добавление комментария при нажатии на кнопке обновить страницу. Сообщение #6
e-five

e-five

Новичок

Новичок

Дата регистрации:
18.07.2013 20:22:50

Сообщений: 2

Здравствуйте! Предлагаю один интересный метод, я сам его использую.
При отображении страницы в своей форме создайте скрытое поле ввода,
в котором содержится некий числовой ключ, и добавьте этот же ключ в 
сессии. То есть вот так:

<?php
session_start(); 
if($_SESSION['key']==$_POST['key']){
//прислали форму здесь обработка формы
}
//И отображаем саму форму
$key = rand(111,999); //генерируем числовой ключ
$_SESSION['key']=$key; //заносим ключ в сессии
?>
<!--HTML-->
<!--и в форму добавляем поле-->
<input type="hidden" name="key" value="<?php echo $key ?>" />
По сути алгоритм такой же как у капчи, разница в том, что ее вводит не пользователь,
и она как бы уже введена.
P.S. В коде могут быть ошибки, особо не проверял, писал быстро
Профиль Ответить