用留言板把大家的留言存起來!

第一個檔案:a.htm

<form action='b.php' method=post>
  大名<input type=text name='UserName' value='路人'><br>
  族群
  <select name='UserGroup'>
    <option>晨曦之鄉
    <option>PHP同好會
    <option>路過的人
  </select><br>

  留言
  <textarea name='UserSay'>內容</textarea><br>

  <input type=submit value='確定'>
  <input type=reset value='取消'>
</form>
第二個檔案:b.php

<?php
  $NewMsg =
    "<br><br>留言時間是:". date("Y/m/d H:i:s").
    "<br>你的大名是:". $UserName.
    "<br>你的族群是:". $UserGroup.
    "<br>你的留言是:". $UserSay;

  $FileName = "Message.txt";
  if (file_exists($FileName)) {
    $fp = fopen($FileName, "r+");
    $OldMsg = fread($fp, filesize($FileName));
    rewind($fp);
  } else {
    $fp = fopen($FileName, "w");
    $OldMsg = "";
  }
  fwrite($fp, $NewMsg.$OldMsg);
  fclose($fp);
  echo "<br>新留言是:".$NewMsg;
  echo "<br>舊留言是:".$OldMsg;
?>
函式:
  1. date(格式)
    依"格式"顯示目前日期與時間,例"Y"(西元年) "m"(月) "d"(日) "h"(時) "i"(分) "s"(秒) "w"(星期),中間的"-"或"/"或":"可自由搭配。
  2. file_exists(檔名$fn)
    判斷"$fn"檔案是否存在。
  3. fopen(檔名$fn, 開檔型態)
    常見開檔型態有"w"(write) "r"(read) "r+"(read+write) "a"(append)。$fp=fopen()把值放入"變數指標$fp",才能做fread()或fwrite()。
  4. fread(檔案指標$fp, 讀取長度)
    從"$fp"所指向的檔案,取得指定長度的資料。
  5. filesize(檔名$fn)
    取得"$fn"檔案的總長度。
  6. rewind(檔案指標$fp)
    移動記錄指標到"$fp"所指向的檔案的最開頭位置。
  7. fwrite(檔案指標$fp, 要寫入的值)
    把值寫入"$fp"所指向的檔案內。
  8. fclose(檔案指標$fp)
    關閉"$fp"所指向的檔案
說明:
  1. 把新留言放入變數$NewMsg(方式可參見前一範例)。
  2. 先判斷留言檔案是否存在,存在則以"r+"的方式開檔;不存在則以"w"的方式開檔。
  3. 讀出舊留言,並放入變數$OldMsg。
  4. 用句點(.)合併新留言$NewMsg和舊留言$OldMsg,存回檔案。
  5. 多按幾次「重整」,就可以看到留言記錄增加情形。
  6. 留言檔Message.txt及存放留言檔的目錄要設成有write的屬性,例如chmod a+w Message.txtchmod a+w 目錄名
  7. 將fwrite($fp, $NewMsg.$OldMsg)改成fwrite($fp, $OldMsg.$NewMsg),再看看結果有什麼不同。

作者:Dana, cowwu@ms15.hinet.net, 2000/12/18
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © 2000 Shu-Chen Wu