Обновление страницы отправляет мою форму

<?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 пишет сообщение и отправляет его, нажав кнопку «Отправить», страница обновляется, и сообщение сохраняется в файле и также распечатывается. После этого поле ввода очищается, но если пользователи обновляют страницу, то же сообщение сохраняется и печатается снова.

Что нужно сделать, чтобы страница не обновлялась при повторной отправке формы?

0

Решение

Ваша страница по-прежнему содержит $_POST значение. Так что, если вы обновите его. это собирается print файл снова.

Итак, добавьте header чтобы перенаправить вашего пользователя следующим образом:

if(isset($_POST['message'])){
file_put_contents($file, $current);
header('Location:Your_File_name.php')
}
1

Другие решения

Я попробовал все предложения, но, к сожалению, они не сработали для меня.

Я провел еще несколько исследований и обнаружил, что лучшим решением для меня и меня было следующее:

оригинальный код:

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>';
}

Спасибо за предложения, они дали мне лучшее представление о том, что искать 🙂

0

По вопросам рекламы [email protected]