クッキー

■概要

クッキーとはWebサイトを訪問したユーザーのブラウザに値を保存させておく機能です。

●特性
	・ユーザーのブラウザにデータを保存する
		クッキーのデータはサーバーではなくユーザーのブラウザに保存されます。
		ショッピングサイトで購入商品を覚えていたりしますが、
		あれはクッキーでチェックした商品を保存しています。

	・セキュリティ性は低い
		ユーザーのブラウザに保存するのでセキュリティは高くありません。
		なので、会員登録で設定したユーザーIDやパスワードなどは
		クッキーではなくセッションに保存されます。

	・ブラウザが変わると無効
		クッキーはあくまでブラウザに保存されるので、
		ショッピングサイトのチェックをChromeでチェックした場合は
		クッキーはChromeに保存されます。
		IEやFireFoxなどの別のブラウザで起動しても
		チェックした内容はなかったことになります。

	・保存サイズ制限有り
		1つのクッキーで保存できる最大サイズは4Kバイトです。
		それ以上のサイズのデータを保存するにはセッションを利用します。

●クッキーの流れ
	①.Webブラウザからサイトへクッキー情報を送信する
		Webブラウザはアクセスするサイト(サーバー)に対して
		関連付けられているクッキー情報があればその情報を添付します。

	②.ブラウザから送信されたクッキー情報の確認をする
		アクセスがあったサーバーは送信情報の中にクッキー情報があるかを確認します。
		この時にクッキー情報があるか、ないかでこのあとの
		ブラウザへの送信情報が変わります。

	③.クッキー情報がある場合
		クッキー情報があれば、その情報を元にしてサイトの表示を変更します。
		例えばショッピングサイトのカートに商品情報なら
		サイトが表示された際にカート情報を反映した状態で表示します。

	④.クッキー情報がない場合
		クッキーがない場合は保存の必要があるかを判断して
		クッキー作成依頼をWebブラウザに送信します。

■実装

ブラウザに関連付けられたクッキーは自動で送信されるので、
実装で必要な処理はクッキーの設定と削除です。
この二つの処理はどちらもsetcookieで行います。

●設定
	設定に必須なのはクッキーを第一引数に指定するクッキーの名前のみで
	保存する値や有効期限、有効範囲などの設定の有無はユーザーが
	決めれるようになっています。

	・保存する値の設定
		クッキーに値を保存したい場合は第二引数に値を指定します。

		・例
			setcookie("shopping_item_id", 1);

	・有効期限設定
		クッキーに有効期限の設定をしたい場合は第三引数に値を指定します。
		有効期限が切れると自動的にクッキーは削除されます。

		・例
			setcookie("shopping_item_id", 1, time() * 60 * 60);

		時間は1秒間隔で指定するので上の例では「60秒 * 60秒 = 3600秒」
		つまり、現在の時間から1時間後までを有効期限として設定しています。
		※0を設定した場合はブラウザを閉じた際にクッキーを削除します。

●削除
	クッキーの削除は値に""を設定するか、有効期限を今の時間よりも前に
	設定することで削除できます。

	・""による削除
		setcookie("shopping_item_id", "");

	・時間による削除
		setcookie("shopping_item_id", "", time() - 3600);

●クッキーの使用
	クッキーの情報は$_COOKIEに保存されています。
	この$_COOKIEは$_GETや$_POSTと同じPHPが用意した特殊なグローバル変数です。
	値が存在するかの確認はisset関数を使用します。
	issetは値が設定されていてかつNULLでない場合にtrueを、
	そうでない場合にfalseを返す関数です。

	・例
		if (isset($_COOKIE["shopping_item_id"]))
		{
			echo "shopping_item_id = " . $_COOKIE["shopping_item_id"];
		} else {
			setcookie("shopping_item_id", 1");
		}

●サンプル
	サイトに訪問した回数をカウントするサンプルです。

		サンプル