SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 応用実地編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK