CakePHPでセッションが消える原因は・・・・。

21356 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2008/03/06 00:37:14 カテゴリ: PHP, CakePHP
スポンサード リンク
んー。

 cakePHPでSessionを利用するときは

$this->Session->write();

$this->Session->read();

を使いますが、今回セッションが消えるという問題がおこった。
現在のバージョンは1.1.18。


最初、CAKE_ADMINを利用した管理画面の時のみ、セッションが消える現象がおこったのでその関係かなと思っていました。でも、実際はCAKE_ADMINは関係なかった。


原因はCSSでした。


→「cakePHPで変なアクセスがある!?
で紹介されていたのですが、

画像、CSSなどで実際に存在しないパス&URLを指定していると、サーバにHTTPアクセスを行う!!

その結果(内容は上記サイト参照)、セッションが消されていたということのようで・・・。
 実際に、管理画面用のCSSには、存在しない画像へのパスが書かれていて、それを消したらセッションが消えなくなりました。だからセッションが消える現象は管理画面にのみ発生していたということです。


対策としては、app/webroot/.htaccessに

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

を追加して画像やCSSなどの場合は、アクセスしないルールを追加してあげればいいとのこと。


また、下記のようにcore.phpのCAKE_SECURITYをhighからmediumに変更することによって上記のようなCSSやimgの指定の間違いがあってもセッションは消えない。

define('CAKE_SECURITY', 'high');

define('CAKE_SECURITY', 'medium');



ってか、CSSかよ・・・。


おまけ

CakePHPのセションのタイムアウト時間の設定値は

CAKE_SECURITY * CAKE_SESSION_TIMEOUT

で決められる。


CAKE_SECURITYがhighの場合は10、mediumは100,lowの場合は300。
その数字掛けるCAKE_SESSION_TIMEOUTがセッションタイムアウトの秒数になるということ。

関連サイト

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

↑ページ上部へ

アクセスカウンター

今日 : 105 昨日 : 14

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック