<?php
$rs = mysql_query("SELECT * FROM users WHERE id='$_SESSION[user_id]'");
while ($row= mysql_fetch_array($rs))
{
$starter= $row['id'];
$user_name= $row['user_name'];
}$starterID=$starter;
$companyID=$_GET['id'];$input = $_POST['message'];date_default_timezone_set('Europe/Helsinki');
$timestamp = date('h:i', time());$file = $companyID." and ".$starterID.".txt";if (file_exists($file)) {
$file = $companyID." and ".$starterID.".txt";
} else {
$file = $starterID." and ".$companyID.".txt";
}$current = file_get_contents($file);
$current.= "<b>$user_name</b> <br> $input $timestamp\n<br>";
if(isset($_POST['message'])){
file_put_contents($file, $current);
}
echo $current;
?>
<form action="" method="post">
<input type="text" name="message" autocomplete="off">
<input type="submit">
</form>
Так что это мой очень простой чат между 2 зарегистрированными пользователями.
Когда пользователь с идентификатором 154 начинает разговор с идентификатором 156, файл 154
а также 156.txt
создано. В этом файле хранятся все сообщения.
Моя проблема заключается в следующем: когда, скажем, пользователь 154 пишет сообщение и отправляет его, нажав кнопку «Отправить», страница обновляется, и сообщение сохраняется в файле и также распечатывается. После этого поле ввода очищается, но если пользователи обновляют страницу, то же сообщение сохраняется и печатается снова.
Что нужно сделать, чтобы страница не обновлялась при повторной отправке формы?
Ваша страница по-прежнему содержит $_POST
значение. Так что, если вы обновите его. это собирается print
файл снова.
Итак, добавьте header
чтобы перенаправить вашего пользователя следующим образом:
if(isset($_POST['message'])){
file_put_contents($file, $current);
header('Location:Your_File_name.php')
}
Я попробовал все предложения, но, к сожалению, они не сработали для меня.
Я провел еще несколько исследований и обнаружил, что лучшим решением для меня и меня было следующее:
оригинальный код:
if(isset($_POST['message']) && $_POST != null){
file_put_contents($file, $current);
}
решение:
if(isset($_POST['message']) && $_POST != null){
file_put_contents($file, $current);
echo' <script type="text/javascript">
location.reload();
</script>';
}
Спасибо за предложения, они дали мне лучшее представление о том, что искать 🙂