アクセス向上大失敗 www.igros.net
Last updated 2004/8/16
コメントバック 対応

ファイルへの記録 -簡単PHP掲示板講座 STEP7-

[PR]特集 Amazon.co.jp レコメンドコンテンツ



STEP7
・投稿されたデータをファイルへ記録し保管する
  [STEP6の問題点] 投稿データが1回の表示で失われてしまう。
  [要点] ファイルへ記録するとともにブラウザへ出力します。
  [決め事] 記録するファイル名を"data.txt"とします。
  [決め事] お名前、メール、本文をデータとして記録する際、データ区切りコードをTAB(\t)とします。
参考ソースプログラム
解説
<?php
# プログラム bbs.php STEP7
 $submit = $HTTP_POST_VARS["SUBMIT"];
 if ($submit=="送信") {
  $name = $HTTP_POST_VARS["NAME"];
  $mail = $HTTP_POST_VARS["MAIL"];
  $body = $HTTP_POST_VARS["BODY"];
  if ($name=="" or $body=="") {
   echo '<font color="#FF000">必須項目入力エラー</font><br>';
   echo 'お名前と本文は必ず入力してください<br>';
   echo '<a href="javascript:history.back()">戻る</a>';
   exit;
  }
  $body = str_replace("\r\n", "<br>", $body);
  $fp = fopen("data.txt", "w");
   fwrite($fp, "$name\t$mail\t$body\n");
  fclose($fp);
 }
 echo '
  <html>
  <head>
  <title>PHP-BBS</title>
  </head>
  <body>
  <h1>PHP-BBS</h1>
  STEP7<br>
  <form method="post" action="bbs.php" accept-charset="x-euc-jp">
  お名前 <input type="text" size="16" maxlength="30" name="NAME">
  メール <input type="text" size="30" maxlength="50" name="MAIL"><br>
  本文<br>
  <textarea rows="10" cols="70" wrap="soft" name="BODY"></textarea><br>
  <input type="submit" name="SUBMIT" value="送信">
  </form>
 ';
 if ($mail=="") { echo "お名前:$name<br>"; }
 else { echo "お名前:<a href=\"mailto:$mail\">$name</a><br>"; }
 echo "本文:$body<br>";
 echo '</body></html>';
?>
ファイルへの記録は[送信]ボタンがクリックされた時だけ必要な処理なので、 if ($submit=="送信") { }の中に書く必要があります。
$fp = fopen("data.txt", "w");はPHPのファイルオープン命令"fopen"で"data.txt"と言う名前のファイルを"w"新規書込みモードで開く、と言う意味になり、この命令で開いたファイルへアクセスするためのファイルポインタを$fpと言う任意の変数に返します。
以降、ファイルを閉じるまで、このファイルへアクセスする場合は$fpを使って操作することが可能になります。
fwrite($fp, "$name\t$mail\t$body\n");はPHPのファイル書込み命令です。
$fpで示すファイルへ、"$name\t$mail\t$body\n"と書き込みます。
例えば、$nameに"IGROS"、$mailに"admin@igros.net"、$bodyに"はじめまして"と保持していた場合、 data.txtと言うファイルに、"IGROS\tadmin@igros.net\t$body\n"と1行書き込まれます。
\tはエスケプシーケンスでTABキーを押した時に挿入される目に見えない特殊コード、\nは同じく改行キーが押された時に挿入されるコードです。
実感として体感したい場合、メモ帳などを開き、IGROS[Tab]admin@igros.net[Tab]はじめまして[Enter]と入力してみてください。
これと全く同じようにdata.txtファイルに書き込まれると言うことになります。
fclose($fp);はPHPのファイルクローズ命令で、$fpで示すファイルポインタ、すなわちdata.txtファイルを閉じます。
では質問です!
$fpoint = fopen("data.txt", "w");とした場合、fwrite、fcloseはそれぞれどう変わるでしょうか?
答えは最後に...

ここまでのサンプル check!

この状態ではせっかく記録したものの、表示する時にファイルからデータを取出して表示していないため、見かけ上は何も変わっていません。
次は表示部分を変更してみます。

答え:fwrite($fpoint,...、fclose($fpoint);


<<<< トップ <<< テーマトップ << サブテーマトップ < 前頁次頁 >

www.igros.net
[PR]特集 Amazon.co.jp レコメンドコンテンツ



Copyright(C) アクセス向上大失敗 All Rights Reservd.
version2.0