〜アウトプットメモ〜
前提知識
・HTTPの理解必要
・リクエスト、レスポンスなどの理解
・HTTPはリクエストし、レスポンスする、この1往復で通信が切断される→以前の状態を全く覚えていない。これをステートレスと言う。
・ステートフルにするには、サーバーがクライエントに対して識別できる一意の値を渡し、クライエントはリクエストする時にその値を教えてあげればサーバー側で識別できるようになる。この役割を果たしているのがCookie(クッキー)。
Cookieについて
・クライアントに保存された情報のこと
<初回>
①リクエスト
②レスポンス(Cookieを保存してください)
③レスポンスの指示に従い、パソコンにCookieを保存
<2回目>
①リクエスト(保存しているCookieの情報も送信)
②レスポンス
・具体的にサーバーはレスポンスメッセージにSet-Cookieヘッダを付与することで、クライエントに対して「Cookieを保存してください」と指示する事が可能。Set-CookieヘッダにはCookieの有効期限やCookieを送るドメイン、有効パスなどの各属性があり。
・クライアントは、リクエストメッセージにCookieヘッダを付与する事で、
「このようなCookieが保存されています」と教える。
・Set-Cookieヘッダの定義
setcookie(Cookie名, Cookie値, 有効日時, パス, ドメイン, HTTPS接続のみ, Javascript無効)
・PHPでCookieを取得する
$_COOKIE = array(
'name' => 'sato';
)
$name = $_COOKIE['name'];
echo $name;
連想配列に格納された値を取得するときは$変数名[キー]
のように記述する。
セッションについて
・セッションとは、一連の処理の始まりから終わりまでを表す概念のこと。
・PHPでセッション開始するにはsession_start();
関数を利用します。
・セッションを管理するには、Cookieに一意の値を入れて、リクエストしてもらうことで、一連の処理として扱える。この一意の値の役割をするのがセッションID。
・session_start()
を記述だけで、自動でセッションIDを発行してくれる。
<リクエストメッセージにセッションIDがない場合>
・セッションIDを発行し、セッションIDをCookieに保存するようにレスポンスメッセージを送信
・セッションIDを発行する時に、サーバー側ではセッションIDごとにセッションファイルを作成
<リクエストメッセージにセッションIDがある場合>
・セッションIDがあれば、該当するセッションファイルにある情報を参照