2 つの異なる Web サーバーに自作の CMS をインストールしています。それぞれが同じコードを維持します。$_SESSION
異なるドメイン間で変数を渡そうとすると、本当に厄介な問題が発生しました。
私の CMS は domain1.com にあります。制御している Web サイトは domain2.com にあります。私のシステムは、ログイン情報のすべてのセッション変数を domain1.com から domain2.com に URL リンク経由で渡します (domain1.com には次のようなリンクがあります: http://domain2.com?sessionId=1gh...
)(sessionId は session_id() によって生成されます)。domain2.com はセッション ID を取得し、セッションsession_id($_GET['sessionId'])
を設定して変数を取得します。次に、上部に管理機能を備えたバーが表示されます。
このシステムは、ホストの 1 つとローカルホストでうまく機能します。しかし、最近別のホストに転送し、CMS を同じコードで正常にインストールしました。この機能以外はすべて機能します。リンクをクリックして session_id を設定しようとすると、session_id は変更されますが、$_SESSION
変数は削除されます。CMS に戻ったら、再ログインする必要があります。どういうわけか、このホストでは、session_id を変更すると$_SESSION
変数が削除されます。
私はセッション変数が好きではありませんでした。もう一度やり直す場合は使用しません (おそらくプレーン Cookie を使用するでしょう)。しかし、私は本当にこれを理解する必要があります。動作するホストは Bluehost で、両方のドメインが Bluehost によってホストされています。動作しないホストは [EDIT]ByteHost で、ドメイン レジストラーは Godaddy です。
domain2.com のコード例を次に示します。
...
if ( $_GET['sessionId'] )
{
session_id($_GET['sessionId']);
}
session_start();
echo session_id(); // returns the proper sessionId passed through the url
print_r($_SESSION); // does not work. returns array()
...
$_SESSION
私はまだ CMS にログインしていたので、変数が以前に存在していたことを保証できます。
セッション変数が 1 つのホストでは機能するが、別のホストでは機能しない理由はありますか?
php.ini ファイルを作業中のホスト ファイルに置き換えてみました。問題はまだありました。
お時間をいただきありがとうございます!
アップデート
これをCMSから削除することになりました。ここで、ログインの詳細を URL に渡すだけで、その人がログインします。よりクリーンに動作します。