私はCodeIgniterシステムをしばらく使用していますが、欠点があります。それが教えてくれたことに感謝していますが、今は新しい非codeigniterプロジェクト用のライブラリが必要なので、どのライブラリに正しいものがあり、どのライブラリが正しくないかについてのアイデアを探しています。必要なものをすべて入手するには、おそらくいくつかのライブラリから断片を取得する必要があります。
Kohana PHPセッションライブラリを調べたところ、データアクセスのために$ this-> sessionに変更を強制する代わりに、$_SESSIONスーパーグローバルを使用するネイティブPHPの方法に戻る方法が気に入っています。
とにかく、私が混乱しているかもしれない他の良いセッションライブラリがあるかどうか知りたかったのです。CRUDだけでなく、セッションで処理しなければならないことがたくさんあります。
- 非Cookieベースのセッションパッシングのサポート(つまり、FacebookまたはFlashアップローダー)
- 次のページの読み込みの間だけ持続し、その後自動削除される「フラッシュデータ」。
- $_SESSIONまたは$this->sessionと連携して、プログラマーが既存のコードを変更する必要がないようにします。
- ページの途中でIDを変更する場合に備えて、新しいセッションID(つまり、session_id('new id'))の設定をサポートします。
- データが追加または削除されるたびにではなく、ページ要求の最後にすべてのデータを保存します(余分なDBクエリを保存します)。
- ストレージ用のファイル、Cookie、またはデータベースの使用をサポートします。(またはmemcachedがいいでしょう)
- セッションハイジャックの場合にアクセスを拒否しようとします。(IP、ユーザーエージェント、または指紋)
CodeIgniterとKohanaのセッションライブラリのロジックを少し時間をかけて調べたところ、それぞれがページのセッションを開始および終了する方法について次のことがわかりました。
/**************
** Kohana Sessions
**************/
If not native file storage {
session_set_save_handler to the storage type (DB, cache, cookie...)
}
set the session_name() so php knows what cookie value to check
start session
/****** Saving ******/
session_write_close() which calls the given handler
/**************
** CI Sessions
**************/
Try to read_session() -> {
session = Get cookie (if using cookies will also contain data)
if(database) {
session .= pull data from database
}
checks if valid...
$this->userdata = session data
} else {
create a new one
}
/****** Saving ******/
session data is serialized either way
if(cookie) {
save cookie with serialized data and params like "last_activity"
}
if(database) {
save serialized data in db and session in cookie
}