php post 重新整理
我的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 "不能鎖定檔案
";
}
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."";
}
}
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);
}
?>
主介面如下:
添加了一條資料以後:
之後我不點擊留言,直接按F5重新整理,並沒有POST,卻在重新整理後出現了相同的資料。如:
真的不明白啊,求解答啊……
回複討論(解決方案)
if (file_exists($file_name))
{
read_message($file_name);
}
只要 $file_name 指向的檔案存在就輸出
並沒有其他方式控制不輸出
可在讀的同時,卻向 text_date.txt檔案中寫資料。當你留言後,不點留言按鈕,就是每重新整理一次,就會向檔案中寫入剛才你留言的資料,然後再輸出。
表單提交後用header做一個重新導向比較好。
重新整理表單返回頁相當於重新提交!
你用的是什麼瀏覽器?重新整理表單返回頁都沒有提示的嗎?
用的是google瀏覽器,
下面是我的一個小測試,提交之後,重新整理就不會出現先前的情況。
網路留言板
//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);
}
?>
你這2段代碼 提交後再重新整理頁面,都是會重複提交的!!
只不過第2段代碼你沒有將資料寫入檔案,所以你看到的都是第1次提交的資料!!
擷取資料後可以跳轉一下!
function write_message($message){echo $message;echo "";exit;}
提交後做個跳轉吧,沒做跳轉,一直停留在提交後那裡,只要你重新整理,資料就會重複提交。
太感謝你們了,我明白了……真心謝謝大夥……