人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

書籍「パーフェクトPHP」のフレームワーク拡張について

今回、パーフェクトPHPという書籍で解説しているフレームワークの拡張について質問します。

上記書籍のサンプルURLです。
http://gihyo.jp/book/2010/978-4-7741-4437-5/support

上記の「ミニブログ」サンプルでは、
セッションをテキストファイルにて管理していると思われます(サンプル内のSession.phpから推測)

このテキストファイルで管理してあるセッションをデータベースにて管理したく、
「Session.php」のSessionクラスを改良したく存じます。
しかし、どう改良すればセッションをデータベース化できるか分かりません。

データベースの構造は、
「user」テーブルにセッション変数(session_id)とCSRF対策の変数(csrf_id)のカラムを追加して管理したく思います。

(例)
「user」テーブルのカラム一覧
id
user_name
password
session_id(追加)
csrf_id(追加)
create_at

「Session.php」を改良してセッション管理できるコードを記載していただければ幸いです。

●質問者: nagato-yuki
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tobeoscontinue
●500ポイント ベストアンサー

> このテキストファイルで管理してあるセッションをデータベースにて管理したく、
>「Session.php」のSessionクラスを改良したく存じます。
Session.phpはphpのセッション関数をラップしているだけです。
phpのセッション管理はデフォルトでテキストファイルを使っています。
これをデータベースにて管理することは可能ですがsession_set_save_handlerを書く必要があり、敷居が高いように思います。
http://php.net/manual/ja/function.session-set-save-handler.php

sqlite や memcache そして memcached などphpの拡張モジュールとして用意されているようです。

> 「user」テーブルにセッション変数(session_id)とCSRF対策の変数(csrf_id)のカラムを追加
アカウント管理で使用している「user」テーブルに追加するのであればある程度は可能です。
creare_table.sqlにsession_idとcsrf_idを追加し実行します。
既にDBがあるのならALTER TABLEで追加します。
UserRepository.phpのinsertは変更する必要があり、どう変更するかで更に修正する箇所が増えていくでしょう。

session_idはregenerateされることがあるので同期するのが面倒のように思います。

session_id、csrf_idは本当にテーブルに保存する必要があるのでしょうか。
セッション変数ではダメなのでしょうか。

もっと絞らないとコードは難しいように思います。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ