クッキー【PHP】

2016-05-20 5:42 AM

さて、「クッキー」とは何か?
Cookieです。
まぁ、いろんなことは抜きにして。

要は、WEBサイトに対する様々な情報、例えばログインするためのIDとパスワードとか、前回のログインした日付と時間とか、そういったいろんな情報がありますが、データとしてサイトのサーバーに保管せずに情報を閲覧しているユーザーの端末に保存させる機能のことです。
もちろん、これはJavascriptでも保存は可能だし、HTML単体ではあつかうことはできませんが、PHPなどのプログラムによって保存させることができます。調べようと思えば調べることはできますが、現在ではそんな面倒なことをしている人は殆どいないかとw
ということで、このクッキーについて。

先ほどもありましたが、Javascriptでもこのクッキーを保存させることはできますが、取り出すときは非常に面倒な工程があります。
その点、PHPだとすでに変数に保管されているので楽に扱うことができます。

まず、「グローバル変数」というものがあります。
いろんな場面で出てくるかと思いますが、「$_SERVER」とか「$_POST」「$_GET」とかもあります。この種類の中で「$_COOKIE」というのがあります。この変数の中にクッキーで保存された情報が入っているということ。
これらは配列変数、もしくは連想配列の形式になっているので、「$_COOKIE[“abc”]」とかそういった形で保存されています。ここからデータを取り出そうというときは

$a = $_COOKIE["abc"];

という感じで取り出すことができます。あとはこの変数を煮るなり焼くなりすればいいわけです。

さて、次にクッキーの特性ですが、クッキーには有効期限というものが存在しています。これはクッキーにデータを保存するときに設定してあげます。
ではPHP上でクッキーにデータを保存するのは…

setcookie(クッキーの名前, 保存するデータ, 有効期限, クッキーを利用するパス, クッキーを利用するドメイン, HTTPSの接続のみで有効にするかどうか, HTTPを通してのみ有効にするかどうか)

1行なのに長くなりましたが、後ろの方は省略できます。
まず「クッキーの名前」というのは、「$_COOKIE[“○○○”]」の「○○○」の部分だと思ってください。
そして「保存するデータ」のところにそのまま、データを入れてください。
次が有効期限です。基本的にタイムスタンプを利用します。
タイムスタンプについては別のページで。
このタイムスタンプは現在のタイムスタンプが「time()」で取得できるので、これにプラスする。数字は秒数なので…「60」で1分。「60*60」で1時間。「60*60*24」で1日という感じで計算していきます。
たとえば、1週間保存させたい場合、1週間は7日間なので、「60*60*24*7」という計算になります。したがって、「time() + 60 * 60 * 24 * 7」という式をこの部分に当てはめてあげればいいわけです。
これ以降の引数は省略しても問題はないかと思います。

では、逆にクッキーをすぐさま削除したい場合はどうするのか?
PHPの関数はやはりこの「setcookie」を使います。そう、クッキー情報を保存するんです。
「クッキーの名前」は同じ。削除したい名前を入れてください。
次に「保存するデータ」のところでは空を入れてください。
次が問題。「有効期限」の部分。
前は「time()」に時間をプラスしてあげましたが、今度はマイナスをしてあげます。
「time() – 60 * 60 * 24 * 7」という感じで。これで削除することができます。
もちろん、有効期限が過ぎても自動的に削除されます。

このクッキーをうまく利用すると、WEBサイトにアクセスしたとき、自動的にログインしてくれるとか、そういったことが可能になります。