Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите разобратся в своем же коде =)
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите разобратся в своем же коде =)

Страниц (1): [1]
 

1. Платинум - 07 Июля, 2009 - 20:11:36 - перейти к сообщению
Есть код добавления комментариев все работает, но при обновлении страницы добавляется опять же последний комментарий. (тоесть по моему условие "если есть переменная $text , то добайляй комментарий") Как я понимаю в этом случаи надо убить переменную. $text
Помогите пожалуста разобратся с этим недоразумением.
PHP:
скопировать код в буфер обмена
  1. <?
  2. if(isset($_POST['text']))
  3. {
  4. $comtext = mysql_query("INSERT INTO Blazer_goost_comments VALUES( '' , '".$_SESSION['nick']."','".$_POST['text']."', '".date("Y-m-d")."' )");
  5. unset($_POST['text']);
  6. }
  7. $result0 = mysql_query("SELECT * FROM `Blazer_goost_comments`");
  8. $com_text = mysql_fetch_array($result0);
  9. do{
  10. printf ('<p>Автор:%s<br> Дата:%s<br>Tекст записи:%s',$com_text['author'],$com_text['date'],$com_text['text'] );
  11.   }
  12.   while($com_text = mysql_fetch_array($result0));
  13.  
  14. if(isset($_SESSION['login']))
  15. {
  16. echo '<p align="center" ><form  name= "order_form" action="index.php?do=gostbook" method="post" name="form1" id="form1  >
  17. <br><input name="comment" type="hidden" value="'.$_SESSION['nick'].'" />
  18. <textarea id="markItUp" name="text"  rows=""></textarea>
  19. <p><img src="Blazer/kcaptcha/?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
  20. <br><input type="text" name="keystring"><br><input name="sub_but" type="submit"  onclick="return qw(order_form)" " />
  21. </form></p>';
  22.  
  23. if(count($_POST)>0){
  24.         if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
  25.                 echo "Верно!!";
  26.         }else{
  27.                 echo "Неправильно!!!";
  28.         }
  29. }
  30. unset($_SESSION['captcha_keystring']);
  31.  
  32. }
  33. else
  34. {
  35. echo 'Зарегестрируйтесь , что бы оставлять записи в гостевой книги.';
  36. }
  37.         ?>
  38.  

Р.S. Правильно ведь ?
2. JustUserR - 07 Июля, 2009 - 21:51:27 - перейти к сообщению
Цитата:
Р.S. Правильно ведь ?
Нет не правильно ведь при обновлениистраницывесь POST-запрос шлется заново
Простоен решение - делать редирект после доабвления сообщени я
Сложнео решение - отслежвать одинковость сообщений делать авторизацию и тд
3. Вездеход - 08 Июля, 2009 - 08:57:42 - перейти к сообщению
или мож так попробовать

$comtext = mysql_query("INSERT INTO Blazer_goost_comments VALUES( '' , '".$_SESSION['nick']."','".$_POST['text']."', '".date("Y-m-d")."' )");
header("Location: путь к скрипту/скрипт.php?всякие переменные&add=ok");


т.е. у вас проходит запись и сразу же редиректится на тудаже (тупо обновление считай страницы), но через $_GET передается какая то переменная (в данном случае add)
и если она задана - значит запись уже была и повторно мы ниче не записываем.
т.е. для записи должно быть такое условие
if(isset($_GET['add']) and isset($_POST['text']) and !empty($_POST['text'])) {...}


unset($_POST['text']);
кстати уберите - толку нет, разве что память чуть освободите ))
4. Платинум - 08 Июля, 2009 - 09:08:52 - перейти к сообщению
Вездеход пишет:
редиректится на тудаже (тупо обновление считай страницы),

Как я раньше не додумался)) Сделал так:
Через услоовие
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. header("Location: ссылка на самого себя" );
  4. ?>
  5.  
  6.  

И получилось то что нужно)))
Спасибо за ответы. Радость
5. JustUserR - 08 Июля, 2009 - 13:18:39 - перейти к сообщению
Цитата:
Как я раньше не додумался))
Кстати достаточно стандартный ход с переадресацией самого на себя и стиранием таким образом POST-запроса

 

Powered by ExBB FM 1.0 RC1