Search A.I.
Menu
ホーム

メールマガジン ホームページプログラミングテク

Windowsテク
Javaアプレット サンプル
Java Q & A
JavaScript Q & A
Perl Q & A
Perl レッスン
PHP レッスン
PHPテク
MS-DOS コマンド集
UNIX コマンド集
SQL コマンド集
SEの基礎講座
WEBシステム開発受注します
]無料フォームメール送信サービス
リンク集
PHP レッスン

1. PHP の基礎
2. PHPの文法、条件式
3. PHPの文法、条件式 - 続き
4. 配列について
5. ハッシュ配列について
6. 関数について
7. 関数について - 続き
8. 文字列操作関数
9. 配列操作関数
10. ファイル操作
11. ファイル操作 - 続き
12. パラメータの受け渡し
13. クッキーとセッション
14. 総合練習
15. メール送信
16. ファイルアップロード
17. クラスについて
18. クラスについて - 続き
19. MySQL
20. MySQL - 続き(1)
21. MySQL - 続き(2)
22. PostgreSQL
23. 総合練習
24. 総合練習解答



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>
-----------------------------------------------------------------

■解説
この課題ではセッションを使用します。

今回は、一度名前を送信したかどうかで表示を変えなくてはなりませんので、
パラメータをまず取得し、空ならセッションを取得します。

名前が取得できれば「ようこそ」を表示し、なければ送信ボックスのみを
表示するという処理になります。




前の章へ 次の章へ


このエントリーをはてなブックマークに追加


OfficeLance

お問い合わせはこちらから