- ベストアンサー
セッションを使用して会員用ページを作成中にIDのセッションが切れる原因と解決方法
- 現在、セッションを使用して会員用ページを作成中ですが、実行環境でIDのセッションが切れる問題が発生しています。
- 問題の原因を調査していますが、特にIDとパスワードの構文に変更は加えておらず、なぜIDだけがセッション切れするのか分かりません。
- PHP.iniの設定に問題がある可能性があり、output_bufferingをOnに変更すると問題が解消される場合があるようですが、レンタルサーバでは直接変更できません。.htaccessを使用して設定変更を試みましたが正常に動作しませんでした。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
session cookie 発行前になにか出力されてしまってるのが原因なら、 最初に呼び出されるphpファイルの先頭で、ob_start(); を実行してやれば、バッファリング開始となり、以降は、文字列出力後に、setcookie や、header出力しても、きちんと、送信されます。 これは、output_buffering = On にするのとほぼ同じ効果です。 http://jp.php.net/manual/ja/ref.outcontrol.php それとも「別のページ」のディレクトリーが異なっていて、session cookie のpath 設定範囲外だったりとか。session.cookie_path とかも調査した方がいいですよ。session_start 前なら変更可能です。 cookie周りのデバッグには、ieではcookie一覧出来ないので、firefoxとかoperaで現在ブラウザが保持しているcookie の状態もチェックした方がいいですよ。 ディレクトリーの深さの違うpathで同じcookie名を発行した時、どれを送るかは、ブラウザ依存という情報もあります。 http://gihyo.jp/dev/serial/01/php-security/0025 path_info 付きのurlの時に、cookie path を ""=ブランクに設定すると、ブラウザはpath_info 込みのurlにcookie 登録するので、path_infoを削ったurlでアクセスした時には、そのcookieは送信されない。ということもあります。つい先日そんな失敗をやらかしたばかり。。。
その他の回答 (2)
- tenderfeel
- ベストアンサー率56% (215/379)
レンタルサーバーはセーフモードではありませんか? セーフモードだとセッションがおかしくなる場合があります。
- bm_hiro
- ベストアンサー率51% (200/388)
> なぜIDだけがセッション切れしているのかが分かりません。 セッションが切れる時は丸ごと切れる気がしますので、 例えば、ですが、 $_SESSION['ID'] = ""; とかが どこかにあって、上書きしてしまってませんでしょうか? 所々に print_r($_SESSION); を入れて、確認してみてはいかがでしょう?
お礼
javascriptでPHPを読んでるところで上書きされていました。 ありがとうございました!