My_Cookie

My_CookieはCookieに関連する処理を扱うためのコンポーネントです。

基本的な使用方法

Cookieへデータを保存する時は次のように記述します。

$cookie = new My_Cookie();
$cookie->set('COOKIE_KEY', 'cookie_value');

Cookieからデータを取得する時は次のように記述します。

$cookie = new My_Cookie();
$cookie_value = $cookie->get('COOKIE_KEY');

不要となったCookieを削除する時は次のように記述します。

$cookie = new My_Cookie();
$cookie->remove('COOKIE_KEY');

パラメータの設定について

phpの標準関数のsetcookieではCookieを保存する際にパラメータを指定する事ができますが、My_Cookieでもこれらのパラメータを指定する事ができます。setcookieの詳しい説明は下記ページをご覧下さい。

http://php.net/manual/ja/function.setcookie.php

My_Cookieで指定可能なパラメータは次の通りです。

  • timeoutはCookieの有効期間を指定します。デフォルトではparams中にあるcookie_lifetimeを使用します。なお、phpのsetcookieのexpireではunix timestampで指定しますが、My_Cookieでは処理時間からの経過秒数での指定となります。0を指定した場合にはブラウザを閉じると同時にCookieがなくなるようになります。
  • pathではCookieの有効範囲となるパスを指定します。デフォルトではZF-Exのトップディレクトリで保存します。
  • domainではCookieが有効なドメインを指定します。デフォルトでは自分自身のドメインを指定します。
  • secureではhttpsの場合のみ送信するかの判定です。デフォルトではfalseとします。
  • httponlyはhttp通信以外、たとえばjavascriptからのCookieへのアクセスを許可するかの判定です。デフォルトではfalseとします。

オプションを設定する時は、params.iniに次のパラメータを設定します。なお、cookie_lifetime以外は任意で、使用しない場合は上記のデフォルト値が使用されます。

  • cookie_lifetime: Cookieの有効期間
  • cookie_path: Cookieの有効範囲となるパス
  • cookie_domain: Cookieが有効なドメイン
  • cookie_secure: httpsの場合のみ送信するかの判定
  • cookie_httponly: http通信以外にCookieへのアクセスを許可するかの判定

この他、setメソッドで保存する時に個別にパラメータを設定する事も可能です。その場合、setメソッドの引数はMy_Cookie::set($name, $value, $timeout = 0, $path = '', $domain = '', $secure = '', $httponly = '')となります。

サンプルについて

ダウンロードするサンプルでは、adminの管理画面のログイン機能でIDとパスワードをCOOKIEに保存可能なようになっています。なお、COOKIEで保存する際にmcryptモジュールを使って可逆の暗号化処理を行っています。そのため、phpにmcryptモジュールがインストールされている必要があります。