ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【php】cookieについて

cookie

引用:http://qiita.com/7968/items/ce03feb17c8eaa6e4672

Webサーバーがクライアントコンピュータに預けるデータ。
前回の接続情報(ユーザー名や買い物かご情報等)を格納
2回目以降の接続で前回のデータを保持したままの利用ができる。

1994年にNetscape Communicationsによって、考案・実装
その後、変遷を経て現在の使用になる。

cashとcookieの違い

cookie
訪れたWebサイトによって作成
コンピュータのブラウザ関連フォルダに保存される
表示したWebページの情報や使用する言語・Webサイトのログオン情報など

chromeの場合、設定画面から確認可能
http://kwski.net/handy/605/

cookieの保存場所(mac,chromeの場合)
/Users/ユーザ名/Library/Application Support/Google/Chrome/Default

cash
ブラウザが作成
コンピュータのChashesフォルダに保存される。
Webページの一時的な情報

cashの保存場所(mac,chromeの場合)
/Users/ユーザ名/Library/Cashes/Google/Chrome/Default

http://www.waseda.jp/navi/faq/cache.html
http://d.hatena.ne.jp/akagamiman/20130916/1379313464
https://okwave.jp/qa/q7182669.html

cookieの仕組み

  • HTTPは1往復ごとに通信が完了しデータを保持しない(stateless)
  1. サーバーからのレスポンシブメッセージにSet-Cookie ヘッダを付与
  2. ブラウザがcookieを保存。
  3. Cookieが存在する限りブラウザがリクエストメッセージに Cookie ヘッダを付与
  4. 前のデータが保持される
  • 保存できるサイズに上限があるため、Cookieに様々な情報を保存するという使い方はできない
HTTPヘッダ
クライアントやサーバーがリクエストやレスポンスで追加情報を渡す
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers

cookiephpで使用

http://php.net/manual/ja/function.setcookie.php
http://php-beginner.com/function/network/setcookie.html

bool setcookie( string name [, string value [, int expire [, string path [, string domain [, bool secure ]]]]] )
//cookieヘッダを定義
setcookie('name','hello');
//expireを指定 18秒後にcookieが削除
setcookie('name','hello', time() + 1800);
//変数に格納して画面に呼び出し
$name = $_COOKIE['name'];
echo $name
//cookieを削除
setcookie('name');
//過去の時間を指定して削除
setcookie('hoge', '', time() - 1800);

session

session_start()
自動でsessionIDを発行。
IDごとにサーバー側にファイルを作成。
(ローカル環境ならローカルのフォルダに保存)

sessionIDはcookieに保存される。
サーバー側への保存なので偽装されない。

sessionIDはより複雑に生成できる。
http://www.php.net/manual/ja/session.configuration.php#ini.session.hash-function

session.gc_maxlifetimeで有効期限を設定できる。

PHPでセッションファイルを破棄

特定の値の破棄

unset($_SESSION['name']);

ファイル自体の破棄

$_SESSION = array();
setcookie(session_name(), '', time()-1, '/');
session_destroy();

セッション、クッキーのセキュリティ対策

https://www.websec-room.com/2013/03/09/497