Перейти к содержимому



При обновлении страницы дублируются (удваиваются) комментарии

#1 werd_34
werd_34
  • Неактивные
  • 34 сообщений
  • Репутация: 0
0

Обновлено 28 мая 2013 - 13:40  Отправлено 25 мая 2013 - 11:52

Здравствуйте, уважаемые форумчане!
Делаю древовидные комментарии. Коментарии то получились (пока без проверок). Но при обновлении страницы комментарии удваиваются и заносятся в базу даннных. Подскажите, как можно исправить. И как прикрутить простенькую капчу?

if(!empty($_POST['uname']) && !empty($_POST['message']) && $_POST['op'] == 'add-comment') {
  $comment = mysql_real_escape_string(strip_tags($_POST['message'], "<p><b><i><font><img>")); // удалим левые теги
  $ip = $_SERVER['REMOTE_ADDR'];
  $client = $_SERVER['HTTP_USER_AGENT'];
  $content_id = intval($_POST['content']);
  $parent_id = intval($_POST['parent']);
  mysql_query("INSERT INTO les_comments (`id`, `name`, `ip`, `client`, `comment`, `content_id`, `parent_id`, `time`) VALUES (NULL, '$uname', '$ip', '$client', '$comment', '$content_id', '$parent_id', '$time')");
}
$content_id = 0;  // это ключевой идентификатор от конкретной статьи
// выводим комменты
$msg = array();
$result = mysql_query("SELECT * FROM les_comments WHERE content_id='$id'");
while($row = mysql_fetch_assoc($result)){
  $msg[] = $row;
}
$count = count($msg);
$parent = 0;
$form = "<div class='editor'>
<form id='comment-form' autocomplete='off' method='post'>
<input type='hidden' name='op' value='add-comment'>
<input type='hidden' name='content' value='{$id}'>
<input type='hidden' name='parent' value='{$parent}'>
<table border='0'><tr><td><input id='uname' name='uname' type='text' value='{$uname}' maxlength='20' size='25' /></td><td>Ваше имя*</td></tr></table>
<textarea name='message' rows='5' cols='65'></textarea><br><input id='submit' name='signup' type='submit' value='Добавить' /></div>
</form>";
$i = 0;
if($count){
  $comments = "<div class='comments-all'><span style='float:left'>Всего вопросов: {$count}</span><span class='add-comment'>Задать вопрос </span></div>".$form;
  $msg = crazysort($msg);
  while($i<$count){
    $margin = $msg[$i]['level'] * 20;
    $date = date("d.m.Y в H:i",$msg[$i]['time']);
    $comments .= "<div id='msg{$msg[$i]['id']}' style='margin-left: {$margin}px'><div class='comment-title'><span style='float:left'><b>{$msg[$i]['name']}</b> <small>({$date})</small></span><span class='comment-ans' id={$msg[$i]['id']}>ответить</span></div><div class='comment-message'>{$msg[$i]['comment']}</div></div>";
    $i++;
  } 
}else{
  $comments = "<div class='comments-all'><span style='float:left'>Вопрос ещё не задавали</span><span class='add-comment'>Задать вопрос</span></div>".$form;
}
Пикреплю всю страницу

Прикрепленные файлы

  • Прикрепленный файл  index.php   5,47К   Количество загрузок: 82

 

 

  • 0

#2 Odmen
Odmen
  • Пользователь PRO
  • 5 275 сообщений
  • Репутация: 56

Отправлено 25 мая 2013 - 13:49

При обновлении данные из POST снова заносятся в базу, потому что они всё ещё есть там. Нужно очищать POST после добавления в базу или редиректить на эту же страницу
  • 0

#3 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

Отправлено 28 мая 2013 - 13:40

Как вариант, можно сделать редирект header("Location: $url");
После этого массив очистится
  • 1

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.





Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 24 3 темы, 7 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография WGN
    #3

    WGN (worldgamenews.com)
    Очков активности: 12 1 тема, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #4

    Totti
    Очков активности: 12 0 тем, 8 сообщений, 1 балл репутации

  • Фотография kuztoday
    #5

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография SergiuS85
    #6

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография mkreine
    #7

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #8

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография kolver
    #9

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография wp01
    #10

    wp01
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru