|
|
|
| помогите пожалуйста чайнику....пишу галерею..возникла проблема с переменными..
вобщем на страницу выводится картинка, ниже нее выводятся комментарии, еще ниже форма для добавления комментария...так вот когда заполняю поля формы и нажимаю *комментировать* то к комментариям добавляется только что созданный коментарий, но если нажать ф5 то этот комментарий добавляется снова!!
принцип таков: если значение у переменной $comment установленно то идет добавление комментария. как уничтожить переменную чтоб не было повторного добавления комента? | |
|
|
|
|
|
|
|
для: LVP
(09.02.2008 в 08:39)
| | Ничего уничтожать не надо. Дело в том, что при обновлении страницы данные из форм передаются снова скрипту. Просто надо Вам добавить проверку на то, что этот комментарий уже добавлен. | |
|
|
|
|
|
|
|
для: AVS
(09.02.2008 в 09:36)
| | комментарии записываются в файл построчно..записывается имя, дата и сам комент.
на момент обновления страницы дата ведь будет другой, тоесть скрипт будет считать что это другой комент, ведь есть различия.... как быть?? | |
|
|
|
|
|
|
|
для: LVP
(09.02.2008 в 09:54)
| | Можно на странице добавления сделать метку с помощью сессии, а затем, при добавлении коментария, удалить эту метку. + при довавлении комментария проверять на наличие метки: если метки нет, отправить на страницу с картинкой. Еесли есть, то добавить комментарий.
Только надо это дело продумать... | |
|
|
|
|
|
|
|
для: Freddie_X
(09.02.2008 в 11:23)
| | Если есть регистрация, то поставь запрет на добавление нового сообщения, если такое уже есть, и с тем же автором:
$query = "SELECT COUNT(*) FROM comm WHERE (mes = '$comment') AND (name='$name')";
$usr = mysql_query($query);
if(!$usr) echo "Ошибка - ";
$total1 = @mysql_result($usr, 0);
if (!$total1 > 0 AND !$name=='' AND !$comment=='')
{
$query="INSERT INTO `comment` ( `name_user`,`mes`,`data_mes`)
VALUES( '$name','$comment','$date $time')";
mysql_query($query);
|
заодно и защита от спама, и от пустых сообщений!;) | |
|
|
|
|
|
|
|
для: LVP
(09.02.2008 в 08:39)
| | Чтобы избежать повторной отправки данных по F5, следует переходить от запроса добавления данных (обычно это POST-запрос) к запросу отображения данных (к GET-запросу) с помощью инструкции header("Location: адрес-Get-запроса"); | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 14:47)
| | вот кусок кода...
тут если $usercomment определена, тоесть если юзер написал комментарий то выполняется функция save_comments()....
<?
function save_comments()
{
global $picture, $username, $usermail, $usercomment;
$date = date("d.m.y - H:i:s");
$usercomment = str_replace(" ","probel",$usercomment);
$usercomment = str_replace("\n","probel",$usercomment);
$usercomment = str_replace("\r","probel",$usercomment);
$usercomment = str_replace("\t","probel",$usercomment);
$usercomment = str_replace("\v","probel",$usercomment);
$usercomment = str_replace("\0","probel",$usercomment);
$username = htmlspecialchars($username);
$usermail = htmlspecialchars($usermail);
$usercomment = htmlspecialchars($usercomment);
if($username<>"")
if($usercomment<>"")
{
$text = "\n".$username."^^".$usermail."^^".$date."^^".$usercomment;
$st=explode(".",$picture);
$fp = fopen("files/".$st[0].".txt","a");
fputs($fp, $text);
fclose($fp);
}
}
if($usercomment)
{
save_comments();
}
?>
пробывал в начало добавлять переменную $c=0 а потом в конце функции сохранения добавлять к значению переменной 1... потом проверял
if($с<>1)
{
save_comments();
}
но всеравно ничего не вышло...
Trianon, можно подробнее про ваш вариант??
галерею делаю без использования mysql, на файлах текстовых... вывод картинки, комментариев и формы для комментариев все это в одном файле делаю.. | |
|
|
|
|
|
|
|
для: LVP
(09.02.2008 в 15:36)
| | Я не вижу ни формы, ни места, где определяется переменная $usercomment
Возможно, сразу после вызова savecomments();
имеет смысл поставить header("Location: http://и_далее_адрес_этой_страницы "); exit(); | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 16:38)
| | Можно сделать 2 скрипта: 1-ый это вывод комментов, 2-ой это добавление комментов.
В конце 2-ого скрипта ставить хеадер, который написал Трианон.
Тогда можно будет обновлять страницу после добавления коммента хоть миллион раз - коммент повторно не добавится... =) | |
|
|
|
|
|
|
|
для: Freddie_X
(09.02.2008 в 18:16)
| | второй скрипт здесь не нужен. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 16:38)
| | >имеет смысл поставить header("Location: http://и_далее_адрес_этой_страницы "); exit();
Пока этот header дойдёт адресату, возможно повторное нажатие на кнопку. | |
|
|
|
|
|
|
|
для: Eugene77
(09.02.2008 в 19:49)
| | Не мешайте мух с котлетами. Речь шла о повторных отправках по F5, а не по явным запросам. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 20:21)
| | Через header все получилось! Trianon, спасибо большое! Всем спасибо!! | |
|
|
|