PHPでクッキーを取得・送信する方法:$_COOKIE, setcookie()

PHPはWebとの親和性が高い言語です。

そのため、クッキーを保存する機能も標準で備わっています。

クッキーの保存、読み込みを行うことでクライアント側にデータを保存することができます。

クッキーとは?

Webアプリケーションではデータを保存するには本来サーバ側に保存するしかありませんでした。

しかし、クッキーと呼ばれる機能を利用することでブラウザ側(クライアント側・ユーザ側)にデータを保存することができるようになりました。

これにより、例えばユーザの名前などをアクセスする度に入力しなくても自動的にPHPで取得・表示できるようになったわけです。

クッキーを使うことでユーザの認証処理なども可能となり、ページからページへデータを受け渡すこともできるようになりました。

クッキーの保存方法

PHPでクッキーを保存するにはsetcookie()という関数を使います。

setcookie(クッキー名,保存したい値)

クッキー名は文字列で変数名のように好きな名前(キー)を付けます。

setcookie("namae", "suzuki");

ただし、このsetcookie()を行うのは文字列が表示される前に行わなくてはなりません。

すなわち、<html>タグよりも前、何も表示されていない段階で phpタグ内にこれを書きます。

クッキーの取得方法

保存したクッキーを読み出すには、$_COOKIE連想配列を使います。

例えば、先ほど "namae" で保存したクッキーを読み出すには以下のように行います。

echo $_COOKIE["namae"];

クッキーの有効期限

ただし、上の例で保存したクッキーはブラウザを閉じると消えてしまいます。

これを次回起動時にまで有効にするためには、クッキー保存時に有効期限を設定する必要があります。

setcookie(クッキー名,保存したい値,有効期限)

有効期限はUNIXタイムで指定します。

UNIXタイムは秒単位で、現在のUNIXタイムは time() 関数で取得できます。

つまり、100秒後まで有効にしたければ time() + 100 でよいわけです。

例えば、以下の例では有効期限を1日後にしています。

setcookie("namae", "suzuki",time()+60*60*24);

クッキーの削除

クッキーを削除するには setcookie()関数でクッキー名を指定し、期限を現在より前に設定します。

この例では100秒前に設定しています。期限が過ぎるとクッキーは削除されるので、これにより"namae"は削除されます。

setcookie("namae" , "" , time()-100 );

まとめ

クッキーは仕組み自体は非常に単純ながらさまざまなことに応用ができる機能です。

セッションなどにも利用されています。セッションを学習する前にまずはクッキーを学習してみると良いでしょう。