页面刷新提交我的表单

时间:2014-10-17 06:57:50

标签: php submit page-refresh

<?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个注册用户之间进行的非常简单的聊天。

当ID为154的用户开始与ID 156进行对话时,会创建文件154156.txt。该文件是存储所有消息的地方。

我的问题如下:当用户说出用户154写入消息并通过按提交按钮发送消息时,页面刷新并将消息存储到文件中并打印。在此之后,输入字段将清除,但如果用户刷新页面,则会再次存储和打印相同的消息。

如何阻止页面刷新再次提交表单?

2 个答案:

答案 0 :(得分:1)

您的页面仍保留$_POST值。所以,如果你刷新它。我再次转发print该文件。

因此,添加header以重定向您的用户,如下所示:

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

答案 1 :(得分:0)

我尝试了所有的建议,但不幸的是那些不适合我。

我做了一些更多的研究,发现这个案例和我的最佳解决方案如下:

原始代码:

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

感谢您的建议,他们让我更好地了解了搜索内容:)