- 締切済み
firefoxとIEでセッションの動きが違う
表題の件で質問させて下さい。 現在、PHP(フレームワークはsymfony)を使って入力フォームを作成しています。 入力した値をセッションに保持し、確認画面で表示させて、 OKならばそのセッションの値をDBに登録と言うシンプルな作りです。 IEだと上記処理が正常に完了するのですが、Firefoxだと登録時に入力値を格納していたセッションがクリア(?)されてしまっていて、正常に登録が出来ない状態になってしまっています。 いろいろ調べた結果、下記URLのように <link href="" rel="stylesheet" type="text/css" media="all"> が入っているとダメな事までは調べられたのですが、その登録処理を行っているPHPは、HTMLは記述していないDB登録のみを行うファイルなため、上記に該当はしないと思っています。 (登録後、完了画面にリダイレクトしています) 他に、firefoxだとセッションが動作しない事象をご存知の方がいらっしゃいましたら、ご教授願えませんか。 PHP Version 5.2.4 Firefox 3.0.7 IE7 でそれぞれ検証しています。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 11spec0
- ベストアンサー率83% (10/12)
実際のセッションへの格納はsetAttribute()で行っているんですよね?私自身はデベロッパーが使えないので、foxのver3は使ったことがないのでなんともいえませんが、symfony上のセッション操作でver2で行ったところ何のトラブルもなかったんですし、特に必要な設定もなかったと思いますし。DBへ格納する場合は少し設定がありますけどね。
- 11spec0
- ベストアンサー率83% (10/12)
セッション管理は何を使用していますか?sfBasicSecurityUser.phpですか?
お礼
ご回答ありがとうございます。 セッション管理は特にいじっておりませんので「sfSessionStorage」だと思います。 factories.ymlのstorageの項目はコメントアウトしたままです。 普通の$_SESSIONもダメだったので、symfonyは関係ないと思っているのですが、そんな事は無いのでしょうか?
- gakkacho3
- ベストアンサー率25% (27/106)
こんにちは 解決方法回答にはなっていないと思うのですが・・・。 おそらく入力画面→確認画面→(DB登録PHP)になっていると思うのですが、「print_r ($_SESSION);exit;」をPHPが絡むファイルに順番に埋め込んで、どこでセッション情報が消えているか、確かめてみてはいかがでしょうか。 自分もIEとFFでレファラー情報の受け渡しがされるときとされないときがありましたので、表現タグではなく機能タグに原因があると思います。 どうしても絞込みができない場合は、公開に支障がある部分だけを塗りつぶしたPHPスクリプトをここに書くか、量が多ければ、自ページにスクリプトを.htmファイルとして貼り付けてそのURLを書いてみてはいかがでしょうか。
お礼
ご回答ありがとう御座います。 上記のように確認はしてみましたが、 確認画面では正常に表示されています。 ですが、DB登録PHPに遷移すると、格納されていませんでした・・・。 それから、何度か調査をしてみたのですが、同じソースを違うサーバーに載せると通常の動作をするようになりました。 なので、ソースが原因では無いとは思うのですが、どうでしょうか。。
- yambejp
- ベストアンサー率51% (3827/7415)
セッション自体はサーバー側の仕組みなので、セッションIDの 受け渡しが失敗していなければとくに問題ないと思いますよ クッキーをはじいていたりとかその手の凡ミスかもしれませんので 見直してみては?
お礼
回答ありがとうございます。 クッキーをはじくような設定をしていると、全てのセッションは効かなくなりますよね? 今回の事象は、入力画面から確認画面でリクエストの値をセッションに格納し、その値を出力した時は正常に表示されています。 また、他の画面でもセッションは正常に動作はしているように見えています。 もう少し調べてみます。
お礼
ご回答ありがとうございます。 はい。 セッションには actionで $this->getUser()->setAttribute("key","value") の形でセットしています。 もう少し詳細な情報が出せるように、調査してみます。 ありがとうございます。