この章ではクッキーについて説明します。
ブラウザとサーバ間のやり取りにおいて、入力内容やユーザーの情報、アクセスした回数などをユーザーのパソコン内部のハードディスクに保存する仕組みをクッキーといいます。
つまり、サーバからのデータをパソコンに保存するしくみです。
通信というのはページを移動するたびに1回接続を切断してから、また接続し直すという行為を繰り返すので、ページ間でデータの引継ぎはできません。
しかし、クッキーと言う仕組みを使うことでデータをパソコン内部に保存することが出来ますので、ページ間の受け渡しが可能になります。
皆さんはショッピングサイトでお買い物をしたことがあると思いますが、1回目は名前などの個人情報を入力しますが2回目アクセスしたときには改めて名前などを入力しなくても、すでに入力されている状態になっているという経験をしたことがあると思いますが、これはクッキーという機能を利用しているのです。
以下の図で詳しく説明します。
①ブラウザからサーバへリクエストします。
②次にサーバでクッキーを発行してブラウザ側にレスポンスします。
setcookieでブラウザにクッキーをセットします。setcookieについては後ほど説明します。
③ブラウザはサーバからのクッキー情報を記録します。
初めてのアクセス時にはまだクッキーはブラウザからサーバに送られません。
2回目のアクセス時にはクッキーがすでにセットされているのでサーバに送られます。
次は2回目の訪問した時について説明します。
①今度は上記3で保存したクッキーをサーバに送ります。
②サーバはこのクッキーを参照してクッキーの値を取得します。
ブラウザから送信されたクッキー情報は
$_COOKIEについては後ほど説明します。
③クッキーに応じて情報やデータを表示する。
では例を見てみましょう。
以下のファイル名は
Lesson29.phpで名前とメールアドレスなどを入力フォームから
初めてLesson29.phpにアクセスした場合には以下の画面が表示されます。
結果は以下のように表示されます。
次にこの状態からブラウザの戻るボタンで
この後にブラウザの更新ボタンをクリックしてください。
クッキーを設定していない状態では何もデータは残りませんが、クッキーを設定すると以下のように名前、メールアドレスにデータが残ります。
PHPでクッキーを発行するにはsetcookie関数を使います。
このsetcookie関数をデータの送り先であるLesson30.phpの中で使用しています。
この関数で名前などの情報をブラウザに保存します。
setcookie関数は正常にクッキーが発行されたらTRUEを、失敗したらFALSEを返します。
setcookie関数の構文は以下の通りです。
そうしないと
ですので、この例ではHTMLのタグより前にsetcookie関数を記述しています。
では例を見てみましょう。
「保存したい内容(値)」には保存したい値を記述しますが、
この例では
これらはフォームに入力したデータです。
「有効期限」には
これは1分を意味します。
time()は関数ですが、この関数は1970年1月1日00時00分00秒からの経過秒数を返す関数です。
つまり、この例の場合にはクッキーの有効期限は1分で、それを過ぎますとデータの保存は消えます。
他に以下の時刻を設定できます。
「クッキーが有効なパス」は今回は省略していますが、デフォルトではカレントディレクトリとなります。
以下の通り
しかしながら、このSSLフラグは全てのブラウザでサポートされているわけではありません。
次にその保存したクッキーのデータを取得する方法について説明します。
保存したクッキーのデータを取得するには
初めに
つまり、カラのデータが代入されます。
2回目のアクセスの時には$nameと$mailにデータが代入されます。
それをprintで出力しています。
これで改めて最初から入力しなくても、以前入力したデータが表示されるようになります。
次にクッキーを削除する方法について説明します。
クッキーはセキュリティの観点からずっと保存しておくのは良くありません。
そこである一定の時間が過ぎたら削除するのが良いでしょう。
この例ではクッキーを削除するために新たに
クッキー名には消したいクッキー名を記述し、保存したい内容(値)には
これでクッキーが削除されたので、戻るボタンを押して、フォームの入力画面に戻ってください。名前、メールアドレスのデータが消えているのが分かります。