Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Чат на php Есть вопрос
цитата
19/04/07 в 11:18
 Lamagro
Простейший код чата. Работает.
Только 1 вопрос - если обновить страницу (F5) последнее сообщение самостоятельно добавляется в файл и соответственно на страницу.
Как сделать так что бы ЗАПИСЬ в файл осуществлялась только при нажатии кнопки субмит?

Код:
<html>
<form method="POST">
Enter Name: <br><input type="text" name="chatname" size="20" value="Anonimous"><br>
Enter Message: <br><textarea name="message" cols="110" rows="5"></textarea><br>
<input type="submit" name="submit" value="Post Message"><br>
</form>
</html>
<?
        if(@$_REQUEST['submit'])
        {
           $name = $_POST[chatname];
           $message = $_POST[message];
           $line = "<b>".date("m.d.y, g:i a")." <u>".$name."</u></b><br>\n".$message."<br><br>\n\n";
           $file = fopen ("all_messages.txt","a");
           fputs ( $file, $line);
   fclose ($file);
        }
       
      
      $all_messages = file_get_contents("all_messages.txt");
      $SplitAllMessages = explode("\n\n",$all_messages);
      
      $a = count($SplitAllMessages);
      $var = 0;
      for($i = $a-1; $i >= $var ;$i--)
      {
         echo $SplitAllMessages[$i];
        }

?>
цитата
19/04/07 в 11:23
 xyrib
если есть <input type="submit" name="submit" value="Post Message">
то при нажатии сабмита появится переменная $_POST['submit']

тоесть проверяешь if($_POST['submit']=="Post Message") бла бла бла
цитата
19/04/07 в 11:54
 cookie
Довольно непросто, надо мутить с куками или сессиями, чексуммами и т.п.

Замени
Код:

fclose ($file);

на
Код:

fclose ($file);
echo '<meta http-equiv="refresh" content="1;url=index.php">';

После отправки сообщения юзер сразу будет редиректиться обратно на форму без пост-данных, если скрипт имеет название index.php Так сделанно на большинстве форумов и гестов.

Либо записывай в хидден-поле и в куки юзера текущий таймстэмп, и во время обработки запроса проверяй, не было ли повтора.
цитата
19/04/07 в 12:45
 proc3nt
Может быть так
Код:

if(isset($_POST['submit']))
{
        //bla-bla-bla
       //записать в файл
}
цитата
19/04/07 в 13:29
 Lamagro
2all
бесполезно

2cookie
спасибо сработало icon_smile.gif


Эта страница в полной версии