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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Платинум
Отправлено: 07 Июля, 2009 - 20:11:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


Помог: 0 раз(а)




Есть код добавления комментариев все работает, но при обновлении страницы добавляется опять же последний комментарий. (тоесть по моему условие "если есть переменная $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. Правильно ведь ?

(Отредактировано автором: 07 Июля, 2009 - 20:13:36)

 
My status
 Top
JustUserR
Отправлено: 07 Июля, 2009 - 21:51:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Цитата:
Р.S. Правильно ведь ?
Нет не правильно ведь при обновлениистраницывесь POST-запрос шлется заново
Простоен решение - делать редирект после доабвления сообщени я
Сложнео решение - отслежвать одинковость сообщений делать авторизацию и тд


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Вездеход
Отправлено: 08 Июля, 2009 - 08:57:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




или мож так попробовать

$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']);
кстати уберите - толку нет, разве что память чуть освободите ))

(Отредактировано автором: 08 Июля, 2009 - 08:59:57)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Платинум
Отправлено: 08 Июля, 2009 - 09:08:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Апр. 2009  
Откуда: Пермь


Помог: 0 раз(а)




Вездеход пишет:
редиректится на тудаже (тупо обновление считай страницы),

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

И получилось то что нужно)))
Спасибо за ответы. Радость
 
My status
 Top
JustUserR
Отправлено: 08 Июля, 2009 - 13:18:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Цитата:
Как я раньше не додумался))
Кстати достаточно стандартный ход с переадресацией самого на себя и стиранием таким образом POST-запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB