2011-01-29 2 views
2

これは、ソリューション(および常識)に反しているような一般的なPHP問題の変形です。ユーザーが自分のサイトでhttpとhttpsを切り替えると、PHPのセッションの内容がダンプされます。これは、test.mysite.comドメインでサイトを実行すると、サイトが正常に動作することを除いて、十分に悪いことになります。この問題は、私がwww.mydomain.comの下でそれを実行したときにのみ表示され、新しいサーバーでのみ表示されます。コードは私の古いマシンで正常に機能しました!SSL上のPHPセッションリセット

両方のサーバーがCentOSを実行していて、Rackspace CloudServerに面倒なものがあります。

提案がありますか?

編集だけで明確なものを作るために:セッションが実際に安全なページに行くときをクリアされます。セッションIDは変更されていませんが、セキュリティ保護されていないページに戻ってセッションの元の内容を表示することはできません。

+0

実際にSSLバージョンは同じノードで実行されていますか?それらを分割することは可能です。 – Orbling

+0

私が知る限り。 – Jitters

+0

"セッションが実際にクリアされました" - 私は**非常に**ありそうもない - セッションIDを失っただけではないか、またはシリアライズされたデータファイル/レコードを本当にチェックしたことは確かですか? – symcbean

答えて

-1

この機能を使用してsecureフラグをfalseに設定してみることはできますか?ここ

<?php 
    session_set_cookie_params(0,"/",".mysite.com",false,true); 
?> 

さらに詳しい情報:http://us2.php.net/manual/en/function.session-get-cookie-params.php

+0

いいえ、動作しません。私は少しはっきりしているはずです:安全なページに行くときにセッション*がクリアされます。ブラウザの戻るボタンを押すと、セッションは空になります。 – Jitters

1

あなたは恐ろしいphp.iniファイルの呪いの犠牲に落ちてきたような音。一部のCookieパラメータが異なる設定になっています。

私は、開発とプロダクションのphp.iniファイルが完全に同じであることを確認します。同じバージョンのPHPを、理想的には同じビルドで実行しています。


EDIT:okですので、php.iniと必ずしも違いはありません。

あなたのCookieに使用しているドメインをご覧ください。明示的にドメインを設定せずにクッキーを設定すると、現在のドメインのみになります。

これがwww.example.comの場合、http://example.com/にアクセスしたユーザーはhttps://www.example.com/にリダイレクトされ、そのCookieが失われます。

なぜですか?クッキーは正確なドメインに設定されているため、ブラウザーによって別のホスト名に送信されることはありません。

複数の名前でサイトを実行する場合も同じです。 という名前のサイトを実行するのは、ちょうど1つの名前であることを確認してください。ユーザーが他の名前で到着した場合は、クッキーを設定する前に、1つの真の名前に永続的なリダイレクトでリダイレクトします。

+0

彼らは同じマシン上にあり、同じバージョンのPHPを実行しています! – Jitters

+0

どのような設定が必要なのか分かりますか? – Jitters

+0

説明をありがとう。私は、ドメインが常に正確に同じように設定されているルーティングを持っています。これについて実際に困惑しているのは、セッション情報が保護されたページに伝播しないのではなく、安全なページに移動するときに**セッション情報が実際に**クリアされるということです。私はセッション情報を見るために安全でないページに戻ることはできません。 – Jitters

関連する問題