我的php代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网络留言板</title>
</head>
<body>
<?php
//error_reporting(E_ALL & ~E_NOTICE);
function write_message($file_name, $message)
{
$fp = fopen($file_name, "a"); //以追加模式打开文件
if(flock($fp, LOCK_EX))
{
fwrite($fp, $message);
flock($fp, LOCK_UN);
}
else
{
echo "不能锁定文件<br>";
}
fclose($fp); //关闭文件资源
}//自定义一个遍历读取文件的函数
function read_message($file_name)
{
$fp = fopen($file_name, "r"); //以只读模式打开文件
flock($fp, LOCK_SH);
$buffer = ""; while(!feof($fp))
{
$buffer .= fread($fp, 1024);
} $data = explode("<|>", $buffer);
unset($data[count($data)-1]);
foreach($data as $line)
{
$arr = explode("||", $line);
list($user_name, $title, $message) = $arr;
if($user_name != "" && $title != "" && $message != "")
{
echo $user_name.'说 ';
echo " ".$title.' ';
echo $message."<hr />";
}
} flock($fp, LOCK_UN);
fclose($fp);
}
//声明一个变量保存文件,在这个文件中保存留言信息
$file_name = "text_date.txt";
//判断用户是否提交按钮
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['user_name']) && !empty($_POST['title']) && !empty($_POST['mess']))
{
$message = $_POST['user_name']."||".$_POST['title']."||".$_POST['mess']."<|>";
write_message($file_name, $message);
} if (file_exists($file_name))
{
read_message($file_name);
}
?>
<!--以下是用户输入表单-->
<form action="" method="POST">
用户名:<input type="text" size="10" name="user_name"><br>
标 题:<input type="text" size="30" name="title"><br>
<textarea name="mess" rows="5" cols="40">请在这里留言...</textarea><br>
<input type="submit" name="sub" value="留言">
</form>
</body>
</html>
主界面如下:添加了一条数据以后:
之后我不点击留言,直接按F5刷新,并没有POST,却在刷新后出现了相同的数据。如下图:
真的不明白啊,求解答啊……
php post 刷新
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网络留言板</title>
</head>
<body>
<?php
//error_reporting(E_ALL & ~E_NOTICE);
function write_message($file_name, $message)
{
$fp = fopen($file_name, "a"); //以追加模式打开文件
if(flock($fp, LOCK_EX))
{
fwrite($fp, $message);
flock($fp, LOCK_UN);
}
else
{
echo "不能锁定文件<br>";
}
fclose($fp); //关闭文件资源
}//自定义一个遍历读取文件的函数
function read_message($file_name)
{
$fp = fopen($file_name, "r"); //以只读模式打开文件
flock($fp, LOCK_SH);
$buffer = ""; while(!feof($fp))
{
$buffer .= fread($fp, 1024);
} $data = explode("<|>", $buffer);
unset($data[count($data)-1]);
foreach($data as $line)
{
$arr = explode("||", $line);
list($user_name, $title, $message) = $arr;
if($user_name != "" && $title != "" && $message != "")
{
echo $user_name.'说 ';
echo " ".$title.' ';
echo $message."<hr />";
}
} flock($fp, LOCK_UN);
fclose($fp);
}
//声明一个变量保存文件,在这个文件中保存留言信息
$file_name = "text_date.txt";
//判断用户是否提交按钮
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['user_name']) && !empty($_POST['title']) && !empty($_POST['mess']))
{
$message = $_POST['user_name']."||".$_POST['title']."||".$_POST['mess']."<|>";
write_message($file_name, $message);
} if (file_exists($file_name))
{
read_message($file_name);
}
?>
<!--以下是用户输入表单-->
<form action="" method="POST">
用户名:<input type="text" size="10" name="user_name"><br>
标 题:<input type="text" size="30" name="title"><br>
<textarea name="mess" rows="5" cols="40">请在这里留言...</textarea><br>
<input type="submit" name="sub" value="留言">
</form>
</body>
</html>
主界面如下:添加了一条数据以后:
之后我不点击留言,直接按F5刷新,并没有POST,却在刷新后出现了相同的数据。如下图:
真的不明白啊,求解答啊……
php post 刷新
{
read_message($file_name);
}
只要 $file_name 指向的文件存在就输出
并没有其他方式控制不输出
下面是我的一个小测试,提交之后,刷新就不会出现先前的情况。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网络留言板</title>
</head>
<body>
<?php
//error_reporting(E_ALL & ~E_NOTICE);
function write_message($message)
{
echo $message;
}
//判断用户是否提交按钮
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['user_name']) && !empty($_POST['title']) && !empty($_POST['mess']))
{
$message = $_POST['user_name']."||".$_POST['title']."||".$_POST['mess']."<|>";
write_message($message);
}
?>
<!--以下是用户输入表单-->
<form action="" method="POST">
用户名:<input type="text" size="10" name="user_name"><br>
标 题:<input type="text" size="30" name="title"><br>
<textarea name="mess" rows="5" cols="40">请在这里留言...</textarea><br>
<input type="submit" name="sub" value="留言">
</form>
</body>
</html>
只不过第2段代码你没有将数据写入文件,所以你看到的都是第1次提交的数据!!获取数据后可以跳转一下!function write_message($message)
{
echo $message;
echo "<script>location.href='';</script>";
exit;
}