SAK 図書館
PHP 基礎編7 - フォームリクエスト、クエリーリクエスト、クッキー setcookie
■フォームリクエスト ・PHP でのフォームリクエスト取得は実に簡単である。 name に指定した名前に $ を付けた変数として渡ってくる。 配列で受け取るには、name="variable[0]" のように指定するだけである。 更に文字コードの変換も不要のようである。 ・ASP 風の <?= $a ?> と言う書式も PHP で使用できる。 但し、<?php = $a ?>、<?php= $a ?>、<? = $a ?> は、 エラーとなる。<?= $a ?> と <?= を続けて書くこと。 HTML に変数を埋め込むには、これが便利である。 または、Perl のようにヒアドキュメントで埋め込むこともできる。 ・次のコードを test.php として実行すると、フォームリクエストの 動作テストが行える。 一度入力したデータは、<?= $a ?> でフォームの初期値に設定して いる。尚、action で ?c=cdata を固定で渡している。 <?php /* ======================================================================== フォームリクエストテスト test.php ======================================================================== */ // 準備 $pgmname = 'test.php'; ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>フォームリクエストテスト</TITLE> </HEAD> <BODY> <P align="center">▼ フォームリクエストテスト ▼</P> <HR> <DIV> <FORM action="<?= $pgmname ?>?c=cdata" id="FORM1" method="post" NAME="FORM1"> <TABLE border=1 cellPadding=3 cellSpacing=1> <TBODY> <TR> <TD nowrap><FONT size="-1">パラメタ a</FONT></TD> <TD nowrap><INPUT id="a" NAME="a" type="text" size="42" maxlength="40" value="<?= $a ?>"></TD> </TR> <TR> <TD nowrap><FONT size="-1">パラメタ b[0]</FONT></TD> <TD nowrap><INPUT id="b0" NAME="b[0]" type="text" size="42" maxlength="40" value="<?= $b[0] ?>"></TD> </TR> <TR> <TD nowrap><FONT size="-1">パラメタ b[1]</FONT></TD> <TD nowrap><INPUT id="b1" NAME="b[1]" type="text" size="42" maxlength="40" value="<?= $b[1] ?>"></TD> </TR> </TBODY> </TABLE> <BR> <TABLE border=1 cellPadding=3 cellSpacing=1> <TBODY> <TR> <TD nowrap><INPUT id=submit1 NAME=submit1 type=submit value=" 実行 "></TD> <TD nowrap><INPUT id=reset1 NAME=reset1 type=reset value="リセット"></TD> </TR> </TBODY> </TABLE> </FORM> <?php // リクエスト取得処理 if ($a != '' || $b[0] != '' || $b[1] != '') { print <<< END_OF_HTML <P>\$a = $a</P> <P>\$b[0] = $b[0]</P> <P>\$b[1] = $b[1]</P> <P>\$c = $c</P> END_OF_HTML; } else { ?> <P>データを入力して下さい。</P> <?php } ?> </DIV> <HR> </BODY> </HTML> ■クエリーリクエスト ・QUERY_STRING によるリクエスト取得も FORM と同等に簡単である。 クエリ識別名に指定した名前に $ を付けた変数として渡ってくる。 配列で受け取るには、?variable[0]= のように指定するだけである。 ・QUERY_STRING に英数字以外を渡す場合は、urlencode を使用する。 $para1 = urlencode($para1); ・次のコードを test2.php として実行すると、クエリーリクエストの 動作テストが行える。 呼び出しは、次のようにする。 http://sak-design/test2.php?a=a000&b[0]=b000&b[1]=b111 <?php /* ======================================================================== クエリーリクエストテスト test2.php ======================================================================== */ ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>クエリーリクエストテスト</TITLE> </HEAD> <BODY> <P align="center">▼ クエリーリクエストテスト ▼</P> <HR> <DIV> <?php // リクエスト取得処理 if ($a != '' || $b[0] != '' || $b[1] != '') { print <<< END_OF_HTML <P>\$a = $a</P> <P>\$b[0] = $b[0]</P> <P>\$b[1] = $b[1]</P> END_OF_HTML; } else { ?> <P>データがありません。</P> <?php } ?> </DIV> <HR> </BODY> </HTML> ■クッキー Cookie ・PHP では、クッキーの書き込みや取得も実に簡単である。 クッキーの書き込みについては、HTML として META で書く方法もあるが、 ここでは、PHP コードで setcookie で出力している。 尚、setcookie は、HTML レスボンスの一番最初で実行する必要がある。 これは、PHP に限ったことではなく、Perl でも同じである。 ・クッキーの取得は、クッキー名に $ を付けた変数として渡ってくる。 クッキーはリクエストヘッダ上に存在するので、setcookie 直後に変数に セットされているのは、リクエストされた時の値である。 初回は、当然空となる。 難解であれば、$cookiename を先に処理して、 $cookiename = 'data'; setcookie('cookiename', $cookiename, time() + 60); のようにすれば良い。 ・次のコードを test3.php として実行すると、クッキーの動作テストが 行える。クッキーの有効期限は 60 秒としている。 【追記】 ・次の test3.php は動作しないとのこと。 途中に $cookiename=$_COOKIE["cookiename"]; を挿入すると、動作するとのことです。(情報ありがとうございました) <?php /* ======================================================================== クッキーテスト test3.php ======================================================================== */ // クッキー出力 setcookie('cookiename', 'data', time() + 60); ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>クッキーテスト</TITLE> </HEAD> <BODY> <P align="center">▼ クッキーテスト ▼</P> <HR> <DIV> <?php // リクエスト取得処理 if ($cookiename != '') { print <<< END_OF_HTML <P>\$cookiename = $cookiename</P> END_OF_HTML; } else { ?> <P>クッキーデータがありません。</P> <P>60 秒以内にリロードすると書き込んだクッキーが読めます。</P> <?php } ?> </DIV> <HR> </BODY> </HTML> ■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料