当ブログ人気記事!
転職体験談
Laravelで学ぶWebアプリ開発
誰でも作れるチャットアプリ
未経験への勧め

【Webエンジニアへの道】Cookieとセッション

プログラミング

こんにちは、SHOOTです。

プログラミング未経験からWeb系エンジニアになってはや半月。

「Cookieとかセッションって何??」


という壁に当たったので、それらについて調べました。

Cookieやセッションについてまだよく理解していない方、
ぜひ参考にしてください!

スポンサーリンク

Cookieとセッションとは?

サイトにアクセスしている人(あなた)が「何者なのか」という情報をブラウザに保持できる仕組み、もしくはデータのことです。

主に、ユーザーの識別やユーザー毎のデータの保存に使われます。


例えば、
フェイスブックやツイッター。

自分のアカウントにログインした後、何か投稿したりいいねしたりできます。


ところで、フェイスブックやツイッターはどうやってあなたが特定のユーザーだということを判断しているのでしょうか?



実は、Cookie(クッキー)やセッションという技術が使われています。


通常、ブラウザとサーバーの通信は、1問1答です。
ブラウザが
「これ表示して」
とリクエストを出す。

それに対してサーバーが
「はいよ」
とレスポンスします。




これではサーバー側はあなたが何者なのか認識できません。


ところが、Cookie(クッキー)もしくはセッションを使うと、
ブラウザが「自分が何者か」という情報を保持できるようになります。


ブラウザが持っているユーザー情報を元に、サーバー側はあなたが特定のユーザーであると判断できます。



Cookieとセッションの違い

データ保持の場所が異なります。

Cookieの場合、
クライアント側でデータを保持します。
データが保持される期間はサーバー側で設定できます。

セッションの場合、
サーバーサイド側でデータを保持します。
Cookieでブラウザにデータを持たせておいて、Sessionの値と比較し、ユーザ認証を行ったりします。

ちなみに保存期間はサーバー側で設定できます。


Cookieとセッションを利用して、堅牢なWebアプリケーションを作れるといいですね!

ブラウザから見てみる

Cookieやセッションの情報はブラウザから確認できます。

ChromeでF12を押下すると検証画面が開けます。
Applicationタグに行くと、Cookieとセッションを確認できます。
(ここでいうセッションは、セッションCookieと言われるCookieの一種でした。)


Laravelで実装してみた

laravelの場合、以下のコードでセッションに保存し、取り出せます。

web.php(ルーティング)
TweetController.php(コントローラ)
session.blade.php(ビュー:新規作成する)


に以下のコードを追記します。

ちなみにTweetController.phpは、

php artisan make:controller TweetController

で自動生成しました。

web.php

Route::get('/session', 'TweetController@session');

TweetController.php


 public function session(Request $request)
  {
      $request->session()->put('user_id', 'shoot');
      $userId = $request->session()->get('user_id');

      return view('session', ['userId' => $userId ]);
  }

session.blade.php

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>session check</title>
</head>
<body>
  <h1>Session Check</h1>
  <h3>{{ $userId }}</h3>
</body>
</html>


TweetController.phpにおいて、

putでセッションにkeyとvalueを保存でき、
getで指定したkeyのvalueが取り出せます。

今回の場合、key:’user_id’, value:’shoot’を指定しました。

View側でセッションから取得したkeyを表示させます。
表示させたviewはこちらです。

セッションに保存した値をViewに表示できました!!!




今回、Cookieとセッションの違いを整理し、セッションに関しては実装しました。

認識が間違っていたらバシバシ指摘をいただけると幸いです。

今後もWeb系エンジニアに必要な知識を発信していきます。

それではまた!

プログラミング
スポンサーリンク
シェアする
SHOOTをフォローする
WebエンジニアSHOOTのブログ

コメント

タイトルとURLをコピーしました