【CakePHP入門】seesionでユーザーのデータを格納する方法

こんにちは!フリーランスの長野です。

sessionって使ってますか?

セッション(session)とは、サーバー側に一時的にデータを保存する仕組みのことです。

例えば、WEBサイトのログイン情報や最終のアクセス情報など、ユーザー個人にひもづくようなデータをセッションに格納して使用することが多いです。

この記事では、sessionについて

・セッション(session)とは
・セッションデータの操作について

という基本的な内容から、

・セッションの設定について

など応用的な使い方の内容についても解説していきます。

今回はsessionについて、使い方をわかりやすく解説します!

セッション(session)とは

セッションとは、前述のとおりサーバー側に一時的にデータを保存する仕組みのことです。

WEBサイトのログイン情報や最終のアクセス情報など、ユーザー個人にひもづくようなデータをセッションに格納して使用します。

データを保存する点でCookie(クッキー)と似ていますが、Cookieはブラウザ側にデータを保存するのに対して、セッションはサーバー側にデータを保存し、テータの保存場所が異なります。

ブラウザ側にデータを保存するCookieは、ユーザーによりデータが改ざんされる可能性があるため、セッションの方がよりセキュリティ的に安全だとされています。

セッションデータの操作について

それでは実際にセッションの使い方についてみていきましょう。

セッションを使用するには下記のようにセッションオブジェクトを取得する必要があります。

セッションオブジェクトの取得方法:

それでは、セッションデータの書き込みや読み込みなどの具体的な操作について確認していきましょう。

読み込み(read)と書き込み(write)について

セッションデータの読み込みにはreadを、書き込みにはwriteを使用します。

記述方法は下記のとおりです。

writeは複数のハッシュを指定して書き込むこともできます。

データの読み込み方法:

データの書き込み方法:

複数のハッシュを指定して書き込む方法:

それではサンプルコードで確認していきましょう。

「/src/Controller/PersonsController.php」にサンプルコードを記述し、「/src/Template/Persons/index.ctp」で出力表示の設定を記述しています。

/src/Controller/PersonsController.php:

/src/Template/Persons/index.ctp:

実行結果:
20170713ListPersons

存在の確認(check)や削除(delete、consume)、破棄(destroy)について

セッションデータが存在するか、nullでないか確認するにはcheckを使用します。

また、削除する場合にはdeleteを、読み込み後削除する場合にはconsumeを使用します。

セッションを破棄する場合にはdestroyを使用します。

それぞれの記述方法については下記のとおりです。

checkの記述方法:

deleteの記述方法:

consumeの記述方法:

destroyの記述方法:

それではサンプルコードで確認していきましょう。

/src/Controller/PersonsController.php:

/src/Template/Persons/index.ctp:

実行結果:
20170713ListPersons2

セッションIDの切り替え(renew)について

ユーザーがログインやログアウトをした際、Authコンポーネントにより自動的にセッションIDは更新されます。

それ以外でセッションIDを手動で切り替えたい場合はrenewを使用します。

renewの記述方法:

セッションの設定について

セッションを破棄するまでの時間などを設定することができます

CakePHP3.xでは「config/app.php」に記述します。

連想配列のキーにcookiecookieTimeouttimeoutを指定してセッションの設定を行います。

default セッション設定の基礎として使用するデフォルト設定
timeout セッションを破棄するまでの時間を分単位で指定
cookie 使用するcookie名。デフォルトは「CAKEPHP」

それではサンプルコードで確認していきましょう。

config/app.php:

このサンプルコードでは「php.ini」ファイルの標準セッティングから、クッキー名タイムアウトクッキータイムアウトを変更しています。

また、session.cookie_lifetimesession.gc_divisorなども追加設定しています。

まとめ

ここでは、sessionの使い方について説明しました。

sessionはログイン情報や最終のアクセス情報など、ユーザー個人にひもづくようなデータを格納して使用する場合などによく使われます。

使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説