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];
}
?>
xyrib
если есть <input type="submit" name="submit" value="Post Message">
то при нажатии сабмита появится переменная $_POST['submit']
тоесть проверяешь if($_POST['submit']=="Post Message") бла бла бла
cookie
Довольно непросто, надо мутить с куками или сессиями, чексуммами и т.п.
Замени
Код:
fclose ($file);
на
Код:
fclose ($file);
echo '<meta http-equiv="refresh" content="1;url=index.php">';
После отправки сообщения юзер сразу будет редиректиться обратно на форму без пост-данных, если скрипт имеет название index.php Так сделанно на большинстве форумов и гестов.
Либо записывай в хидден-поле и в куки юзера текущий таймстэмп, и во время обработки запроса проверяй, не было ли повтора.