Contents Management System
  1. ホーム
  2. ブログ一覧
  3. concrete5.7でセッションハンドラをデータベースに変更する

concrete5.7でセッションハンドラをデータベースに変更する

DBconcrete5

サーバの設定がガチガチでセッションが書き込めなくなっていたのでデータベースに書き込む方法に変更したので、そのやり方についてメモします。

この記事を書いた人

かみーゆ/フロントエンドエンジニア

セブ島在住の気ままなフリーランスエンジニア。テクニカルディレクター・エンジニア講師・ブリッジSEを経て今に至る。CMS concrete5エバンジェリスト。テックブログ以外も「磨耗しない人生の選択」や「海外生活」のライフスタイルについて発信。好きなものは肉とビール。

Read More

まず、親ページデータの取得方法

そもそもセッションってなんぞ?

セッションとはサーバーとクライアントとの一連のやりとりのことです。 どのユーザーがアクセスしてきているのか、あるいはこれまでにどのような情報のやり取りが あったのかと?いったことを判断します。 このようなサーバーとクライアント間の情報を管理・保持することをセッション管理と言います。
http://www.standpower.com/php_session.html

セッションはどうやって管理される?

サーバーはリクエストがあったクライアントに対して、セッションIDというものを発行し、クライアント側に保存させます。 サーバーはセッションIDとクライアントとのやり取りの情報を保存します。 次回、クライアントがそのサーバーに接続した際に、セッションIDにより それまでにやり取りした情報や記録を保持したものを引き継ぐことができるのです。

ちなみにクッキーの違う点はクライアント側で情報を保存します。

通常のセッションの保存場所

セッションを利用するためにはphp.iniに以下のような設定が必要になります。

  • session.usetranssid = on
  • session.save_path = 任意のディレクトリ これでセッションをスタートさせれば通常セッションが任意のディレクトリ内に保存されるようになりますので、使えるようになるわけです。

が、

サーバのセキュリティがガチガチでセッションファイルを書き込むディレクトリーが見当たらないよーと途中からエラーを吐くようになりました。

本題:セッションの保存場所を変えてみよう!

ということで仕方ないので、セッションの保存場所をデータベース内に変更することに。

まずconcrete.phpを作成、application/config内に保存。

ここにこのファイルを作ることによって、concrete/config/concrete.phpをオーバーライドします。

すでに他の設定で作っている場合は、return array();の中に以下のようにコードを追記します。

return array(
    'session' => array(
        'handler' => 'database',
    )
);

これでセッションはデータベース内に保存されるようになりました。

関連記事もあわせてお読みください

Web制作に関する人気の記事

海外移住・ライフスタイルに関する人気の記事

キャリアアップ・転職に関する人気の記事