function beforeFilter() { CakeSession::$requestCountdown = 1; } Configure::write('Session', array( 'defaults' => 'php', 'timeout' => 1440, 'autoRegenerate' => true, 'ini' => array( 'session.cookie_lifetime' => 0, 'session.gc_maxlifetime' => 86400, 'session.gc_probability' => 1, 'session.gc_divisor' => 100 ) ));
Authコンポーネントを使ってログイン処理を作り、1日でセッション切れを起こすようにしたのに、いつまで経ってもセッション切れによる自動ログアウトする気配がありませんでした。 そこで、Userテーブルにあるセッションの有効期限カラムのタイムスタンプを調べたところ、なぜか60日後。 60倍? おかしいと思い調べたところ、なんと、タイムアウトに設定する数値の単位が「分」で指定するようになっていたではないですか! 普通は秒じゃないの・・・? とりあえず、絶対に忘れる自信があるので、メモっておきます。 タイムアウト時間の設定 Cakephp2.3.xでは、/app/Config/core.php に以下の記述があるので、ここで設定します。 デフォルト状態
This document is for a version of CakePHP that is no longer supported. Please upgrade to a newer release! セッション¶ CakePHP は PHP 標準の session 機能上に、ユーティリティ機能一式と ラッパーを提供します。セッションはリクエストにまたがるユニークユーザーの識別と 各ユーザーごとの永続的データの格納を可能にします。 セッションの設定¶ セッションの設定は Configure に格納されます。トップレベルの Session キー下に格納され、いくつかのオプションが用意されています: Session.cookie - セッションクッキーの名前を変更します。 Session.timeout - CakePHP のセッションハンドラがセッションを破棄するまでの時間を 分
デフォルトはphp.iniに従いSESSION保存先を指定してるみたい。 わかりやすくcakeのtmpフォルダに変更してみる。 (保存先:cakephp/app/tmp/sessions) 編集するファイルは以下 Config/core.php コメント欄に * The built in defaults are: * * – ‘php’ – Uses settings defined in your php.ini. * – ‘cake’ – Saves session files in CakePHP’s /tmp directory. * – ‘database’ – Uses CakePHP’s database sessions. * – ‘cache’ – Use the Cache class to save sessions. こんなんかいてあるのでdef
./Config/core.phpを下記のようにすると ブラウザの保存するクッキーは有効期限0で、ブラウザを終了すればなくなります。 一方データベースに保存するセッション情報は15分でなくなるので、 15分アクセスしなければ再度ログインが必要になります。 (正確にはデータベースのセッション情報の有効期限が15分) ./Config/core.php Configure::write('Session', array( 'defaults' => 'database', 'cookie' => sid', 'cookieTimeout' => '0', 'timeout' => '15', 'checkAgent' => 'true' )); はじめtimeoutを0にする設定しかしていませんでした。 すると、サーバー側(データベース)のセッション有効期限も0となり、 想定どおりの動きをして
CakePHP 2.1 では (それ以前でも) Session の保存先に php と cake と database を設定できるようになっています。php は通常通り、cake はおそらく CakePHP のどこかに保存をしてくれる、database はデータベースの Session 用のテーブルに Session を保存してくれる機能です。 Session をデータベースに保存する設定 データベースで Session を管理する場合は以下のように Session.defaults に database を設定します。その他の設定は分かりやすくするために一緒に掲載しています。ちなみにこの記述は bootstrap.php などに書いて下さい。 Configure::write('Security', array( 'level' => 'high', 'salt' => 'qwerty
CakePHP 2.xで、セッションタイムアウトの時間を指定しようとすると、下記のように書くと思います。 Config/core.php Configure::write('Session', array( 'defaults' => 'php', 'timeout' => 1440, //1days ←単位は分 )); しかし、これだけではダメだったりするのです。 具体的には、1日経たなくてもセッションタイムアウトしてしまいます。 その理由は、PHPでのセッションファイルのガベージコレクションにあります。 PHPでは、セッションを開始すると(session_start())、ふつうはセッションファイルを作成します。 CentOS6.2にyumでPHPを入れた場合は、/var/lib/php/sessionあたりです。 CakePHPのcore.phpで、Session.defaultsを
『CakePHP』1.2でのセッションの使い方確認。 セッションについては 1.1 から変わった部分はないみい。 SessionComponent Class Reference とりあえず、コントローラにいろいろ書いて確認してみた。 設定 セッションデータの保存場所 設定でセッションデータの保存場所についての設定。 /home/theworld/cake/project/tutorial/config/core.php 'php' Uses settings defined in your php.ini. 'cake' Saves session files in CakePHP's /tmp directory. 'database' Uses CakePHP's database sessions. 保存場所は CakePHP の tmp にしてみたいので、 cakeを指定。 Co
バージョン:CakePHP 2.2.2 セッションの使用方法について。 •セッション保存 $this->Session->write('name’, 'テスト’); •セッション取得 $this->Session->read('name’) •セッション削除 $this->Session->delete('name’) •セッションチェック SessionComponent::check('name’) ▽簡単な動作確認 「TopController」に一度アクセスをしてから、 「Page1Controller」にアクセスすると’テスト’と表示されます。 同時にセッションの値を削除するので、 「Page1Controller」をリロードすると"セッションに格納された値はありません!"と表示されます。 •TopController.php $this->Session->write('nam
セッション¶ class SessionComponent(ComponentCollection $collection, array $settings = array())¶ CakePHP の SessionComponent は、複数のページにわたってクライアントのデータを継続して 保持する方法を提供します。このコンポーネントは $_SESSION 変数に関連した いくつかの便利なメソッドを持つラッパのように振舞います。 CakePHP ではセッションの複数の方法で設定を行えます。 詳しくは セッションの設定 を参照してください。 セッションデータを伝達する¶ SessionComponent はセッション情報を伝えあうために使われます。 ユーザへ出力するメッセージの作成はもちろんのこと、基本的な CRUD 機能が含まれます。 覚えておきたいことは、 ドット記法 により配列構造で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く