4

PHP セッション Cookie で、オープン ソース PHP アプリケーションである *SugarCRM** アプリケーションにログインできないという問題が発生しています。

問題は、以下のような 2 つのサブドメインに同じアプリケーションがインストールされていることです...

メインサイト
www.domain.com

開発サイト
dev.www.domain.com

一方にログインすると、もう一方にはログインできなくなります。

Cookie の問題を確認するには、下の画像をご覧ください...

ここに画像の説明を入力

上の画像では、2 つの PHPSESSID Cookie がセッションで競合していることがわかります。

それらのいずれかを削除すると、問題なく通常どおりログインできるようになります!

これは SugarCRM であるため、アプリケーションのコア ファイルを実際に変更することなく、この問題を解決できることを願っています。しかし、私がしなければならない場合は、そうします。

それで、誰かが良い解決策について何か考えを持っていますか?

今のところ、私が本当にやりたくない「Nasty Dirty Hack」のアイデアです。ログインフォームにボタンを作成することです。このボタンはJavaScriptを使用してクリア/削除PHPSESSID Cookiesしますが、適切な解決策を見つけたいと思います.

誰かアイデアがあれば、共有してください。ありがとうございました


更新
これまでの回答に感謝します。これは、私が簡単にコードを変更できるように作成した単純な PHP アプリケーションではないことをご承知おきください。これは SugarCRM であり、数千のファイルを持つ巨大な大規模アプリケーションです。

4

5 に答える 5

0

実際に変更する必要があるのはドメインではなく、「セッション名」(Cookie パラメータの名前) です。どちらのアプリもデフォルトの「phpsessid」を使用しているようで、異なるものにする必要があります。そうしないと、アプリが互いのセッションを参照したり、間違ったセッションを参照したり、他のプロジェクトで定義されたクラスのみをシリアル化解除しようとしたりします。

セッション ID を格納する Cookie パラメーターを変更する必要があります。これは、環境変数 (php.ini、.htaccess など) から制御できます: http://us1.php.net/manual/en/session。 configuration.php#ini.session.name

このようにして、同じドメインで複数の PHP セッションを持つことができます。たとえば、example.com/sugarcrmsugarCRMexample.com/fooでセッション ID を「sugarsession」という Cookie パラメータに保存することができます (デフォルトの phpsessid の代わりに)。

于 2013-11-06T14:30:44.557 に答える
0

関数を使用してみてください ( http://php.net/manual/en/function.session-set-cookie-params.php ):

  session_set_cookie_params ( $lifetime, $path, $domain, $secure, $httponly)

そして1セット$domain = '.domain.com'

または、 setcookieでセッション Cookie を手動で設定する場合は、同じドメインも設定します

于 2013-11-06T13:45:49.983 に答える
0

サブドメインの .htaccess パラメータで設定してみてください

php_value session.cookie_domain .domain.com

またはphpコードで使用しますが、「session_start()」の前に

ini_set('session.cookie_domain', '.domain.com' );
于 2013-11-06T13:47:46.090 に答える
0

session_set_cookie_paramsを使用 する

プリンシパル ドメインで、サブドメインからセッションを設定します。

于 2013-11-06T13:47:47.537 に答える