| 
 14.  総合練習 
今日は、今までの総合練習として、1つだけ課題をやっていただきます。 
 
1. 簡易的な掲示板を作成してください。ただし、以下に条件に従ってください。 
 (1) HTMLは、下のテンプレートを使用してください。 
  (2) ユーザは、ハンドルネームとメッセージを入力でき、一度登録したら、 
  次回からはクッキーにより、ハンドルネームをデフォルトで表示するように 
  してください。 
  (3) データの保存は、ファイルに行ってください。保存するデータは、日付、 
  ハンドルネーム、メッセージです。 
  (4) プログラムは、1つのPHPファイルで完結させてください。フォームの 
  送信先は、自分自身のファイルになります。ただし、データファイルは 
  別ファイルとしてください。 
  (5) データファイルに何もデータがない場合は、ハンドルネームとメッセージの 
  入力部分のみを表示してください。 データがあるときは、メッセージ一覧を 
  表示してください。 
  (6) 日付は、メッセージを登録した日付のこととします。 
テンプレートHTML 
  ----------------------------------------------------------------- 
<HTML> 
<BODY> 
<CENTER> 
<P><FONT style="font-size=12pt"><B>◆ 簡易掲示版 ◆</B></FONT></P> 
<FORM action="" method="post"> 
<TABLE bgcolor="#b0b0b0" border="0" cellPadding="3" cellSpacing="2"> 
<TBODY> 
<TR bgcolor="#f0f0f0"> 
<TD nowrap><FONT style="font-size=9pt">ハンドル</FONT></TD> 
<TD nowrap><INPUT name="hd" size="22" maxlength="40"> 
</TR> 
<TR bgcolor="#f0f0f0"> 
<TD nowrap><FONT style="font-size=9pt">メッセージ</font></TD> 
<TD nowrap><INPUT name="ms" size="62" maxlength="200"> 
</TR> 
</TBODY> 
</TABLE> 
<BR> 
<TABLE bgcolor="#b0b0b0" border="0" cellPadding="3" ccllPladding="2"> 
<TBODY> 
<TR bgcolor="f0f0f0"> 
<TD nowrap><INPUT name="submit1" type="submit" value=" 投稿 "></TD> 
<TD nowrap><INPUT name="reset1" type="reset" value="リセット"></TD> 
</TR> 
</TBODY> 
</TABLE> 
</FORM> 
<TABLE bgcolor="#b0b0b0" border="0" cellpadding="3" cellspacing="2"> 
<TBODY> 
<TR bgcolor="#d0d0d0"> 
<TD nowrap><FONT style="font-size=9pt">日付</FONT></TD> 
<TD nowrap><FONT style="font-size=9pt">ハンドル</FONT></TD> 
<TD><FONT style="font-size=9pt">メッセージ</FONT></TD> 
</TR> 
 <TR bgcolor="#f0f0f0"> 
<TD nowrap><FONT style="font-size=9pt">2005/01/01 15:00</FONT></TD> 
<TD nowrap><FONT style="font-size=9pt">ハンドル名を出力</FONT></TD> 
<TD><FONT style="font-size=9pt">ここにメッセージを出力</FONT></TD> 
</TR> 
 </TBODY> 
</TABLE> 
</CENTER> 
</BODY> 
</HTML> 
  ----------------------------------------------------------------- 
  
★前回の課題の解答 
  1. クッキーに接続した日時(YYYY/MM/DD HH:MM:SS)を保存し、取り出すプログラムを 
  作成してください。取り出した日時は、「前回のアクセス日時」として、HTML上に 
  表示してください。1つのプログラムにまとめてしまっても結構です。 
→下のサンプルを参照してください。 
----------------------------------------------------------------- 
<? 
// クッキー名 
  $cookie_name = "cname"; 
// クッキーを取得 
  $access_time = $_COOKIE[$cookie_name]; 
// 現在時刻を取得 
  $new_time = date("Y/m/d H:i:s"); 
// クッキーに書き込み 
  setcookie($cookie_name, $new_time, time()+60*60*24*30); 
?> 
<HTML> 
<BODY> 
前回の接続時間 <?=$access_time?> 
</BODY> 
</HTML> 
  ----------------------------------------------------------------- 
■解説 
  クッキー名は任意の文字列ですので、何でも構いません。 
  クッキーの有効期限は、30日間としています。 
最初のアクセス時は何も表示されませんが、更新ボタンでもう一度アクセスすると、 
  前回保存した日時が表示されます。 
 
2. HTML上に、名前の入力ボックスを作成し、これをPOSTで受け取り、セッションに 
  保存し、次回のアクセス時からは、この名前が表示されるプログラムを作成して 
  ください。1つのプログラムにまとめてしまっても結構です。 
→下のサンプルを参照してください。 
----------------------------------------------------------------- 
<? 
// セッション使用宣言 
  session_start(); 
// セッション名 
  $session_name = "sname"; 
// パラメータ取得 
  $access_name = $_POST["access_name"]; 
// 名前が送られていない場合は、セッションから取得 
  if (!$access_name) { 
  $access_name = $_SESSION[$session_name]; 
  } 
// 名前から空でなければセッションに格納 
  if ($access_name) { 
  $_SESSION[$session_name] = $access_name; 
  } 
?> 
<HTML> 
<BODY> 
<? 
  if ($access_name) { 
  print "ようこそ" . $access_name . "さん"; 
  } 
// 入力画面を表示する 
  ?> 
<form action="013.php" method="post"> 
  お名前 <input type="text" name="access_name" value="名前を入力してください。" size="50"><br> 
<input type="submit" value="送信"> 
</form> 
</body> 
</html> 
</BODY> 
</HTML> 
  ----------------------------------------------------------------- 
■解説 
  この課題ではセッションを使用します。 
今回は、一度名前を送信したかどうかで表示を変えなくてはなりませんので、 
  パラメータをまず取得し、空ならセッションを取得します。 
名前が取得できれば「ようこそ」を表示し、なければ送信ボックスのみを 
  表示するという処理になります。 
 
 |