またまた久しぶりな感じですが、、今日もはじめます。
今回やることはこんな感じです。
- クッキー情報について勉強する
- クッキーとは
- メールアドレスを送信するフォームを作成
- メルアド情報を送信しクッキーをクライアントマシンに保存
- 2回目にそのページにアクセスした際に1回目に入力したメルアドを自動表示させる
今日の例題 – クッキーを利用して初回に入力したデータを2回目のアクセスで復元する
お題
まずは、クッキーとはなんぞや?というところから。。
クッキーとは
クッキーとは、クライアント上に保存される小さなテキストのことを言います。
通常、Webの世界では、セキュリティ的な観点から、サーバからクライアントに対して書き込みを行うことは許されていません。
しかし、クッキーだけが唯一の例外で、サーバがクライアント側になにかしらの情報を残したいと思った場合には、
まずクッキーを利用する必要があるのです。
クッキーという言葉自体は良く聞いていたので、ほんとになんとなーくはわかっていたつもりです。
今回の勉強で完全に理解してやる!(><)
新規にコードを作成する
※2回目に訪れた時にクッキーで保存した内容を表示させるページね。
cookie.php
<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<form method="POST" action="cookie_rec.php">
E-Mailアドレス:
<input type="text" name="email" size="30" maxlength="150" value="<?php print($_COOKIE['email']); ?>"" />
<input type="submit" value="送信" />
</form>
</body>
</html>
動作確認
ブラウザで以下URLを指定して確認。
https://5039.jp/php10/day02-3/cookie.php
サンプル
もうひとつ、クッキーをクライアントに送信するページのコードも書きます。
新規にコードを作成する
cookie_rec.php
<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<?php setcookie("email",$_POST['email'],time() +(60*60*24*90)); ?>
クッキー"email"を保存しました。
</body>
</html>
今回覚えておく大切なことは2つです。それは、、
クッキーへの書き込みと読み込みの記述方法だ!!
まず1つめ、cookie_rec.php の6行目に注目。
<?php setcookie("email",$_POST['email'],time() +(60*60*24*90)); ?>
【setcookie命令】
setcookie(クッキー名,値[,有効期限[,対象のホスト[,対象のパス]]])
対象のホスト、パスを指定した場合、該当のクッキーをどのホスト/パスから
読み込むことができるかを限定することができます。デフォルトでは、現在
のホスト配下のすべてのパスで読み込むことができます。
クッキーの有効期限が何やら難しそうなのでここも参考書から説明を引用しておく。
クッキーの有効期限は、タイムスタンプ値として指定する必要があります。
タイムスタンプとは「1970年1月1日からの経過秒」のことで、time命令は現在時刻
のタイムスタンプ値を返します。つまり、ここではtime命令の値に対して「60秒×60分×24時間×90日」
の値を加算することで、クッキーの有効期限を省略した場合にはクッキーはブラウザを閉じたタイミングで破棄されます。
なるほど~PHPはどんな日付や時刻でもタイムスタンプという形式で認識するってこともしっかり覚えておかねば。
そして2つめ、クッキー値を取得するスーパーグローバル変数。
【$_COOKIE】
$_COOKIE[‘クッキー名’]
setcookie命令で指定したクッキー名を指定します。
今回のフォームでのクッキーを使った裏側やりとりを簡単にまとめると、以下のようになる。
↓↓↓
クッキーを保持したクライアントは、該当のホストに対してリクエストするタイミングで、
常にクッキーをサーバに送信する。サーバ側は、これを適宜、参照することでクッキーの値を復帰できる、ということらしい。
ふむ。ここは超重要な気がする!要チェックや!(彦一風に)
ほんでもって、クッキーには色々な使い方があるらしい。。
でも、今のおれには「こんな場合に使えたりするぜ!」みたいなイメージがほとんどわかねえ・・・。
ちくしょうーくやしいぜ。はやくプログラマーになりたーーい!がんばりまーす!
参考書:
10日でおぼえるPHP5 入門教室