-
- ini_set('session.cookie_path', '/');
- ini_set('session.cookie_domain', '.mydomain.com');
- ini_set('session.cookie_lifetime', '1800');
コードをコピー
2.php.iniに設定します。
-
-
session.cookie_path = /
- session.cookie_domain = .mydomain.com
session.cookie_lifetime = 1800
-
コードをコピー
3. phpページの先頭で関数を呼び出す(1と同じ条件)
-
- session_set_cookie_params(1800, '/', '.mydomain.com');
コードをコピー
これら 3 つの方法は同じ効果があります。
ここでは、最初の方法を使用して 2 つのドメイン名 (www.mydomain.com と sub.mydomain.com) をセットアップしてテストします。
sub1.php
-
-
- //最初にアクセスするページを設定します
- ini_set('session.cookie_path', '/');
- ini_set('session.cookie_domain', '.mydomain .com');
- ini_set('session.cookie_lifetime', '1800');
//
- session_set_cookie_params(1800, '/', '.mydomain.com');
- session_start ();
- $_SESSION['sub1'] = 'sub1';
- print_r($_SESSION);
- ?>
-
コードをコピー
sub2.php
-
- session_set_cookie_params(1800, '/', '.mydomain.com');
- session_start();
- $_SESSION['sub2'] = 'sub2';
- print_r($_SESSION );
- ?>
コードをコピー
アクセスシーケンス:
(1)www.mydomain.com/sub1.php
ページ出力: 配列 ([sub1] => sub1)
(2)sub.mydomain.com/sub2.php
ページ出力: 配列 ( [sub1] => sub1 [sub2] => sub2 )
成功
2 番目の目標は、データベースを使用して SESSION データを保存することで達成できます。これにより、各サーバーが同じデータ ソースに簡単にアクセスして同じ SESSION データを取得できるようになります。または、NFS などのファイル共有を使用できます。 )
セッションデータを保存するためにデータベースを使用する場合、Web サイトのアクセス数が多い場合、SESSION の読み取りと書き込みが頻繁にデータベース上で行われる可能性があります。これを memcache に置くことができます。データベースに実装されている過去の記事があります。データベースと memcache を組み合わせるというアイデアは以前に議論されました。 memcache を単独で使用してセッションを保存するのが適切でない場合は、データベースと組み合わせることをお勧めします。
2) クロスドメイン ソリューション
アイデア:
これを解決するには iframe を使用しますが、ff はそれをサポートしていないため、前に p3p プロトコルを追加する必要があります。
P3P (Platform for Privacy Preferences Project) は、自分が善人であることを宣言し、ブラウザ ユーザーの行動の収集を許可するプロトコルです。
しかし実際には、誰もが自分は善人だと言いながら、裏では悪いことをしているかもしれません。
ここに意見の相違があります。 【参考】国内のほとんどのWebサイトはこのP3Pに注目していません。プライバシーの問題は外国ほど真剣に受け止められていない可能性があります (Microsoft のプライバシーに関する声明)。
最初に思いつくのは、JS を通じて Cookie を操作し、2 つの異なるドメインの Cookie が相互にアクセスできるようにすることで、上記の効果を実現することです。
以下は 2 つのステップに分かれた具体的な実装プロセスです。
1. システム A でログインに成功したら、JS を使用して非表示の iframe を動的に作成し、iframe の src 属性を使用して、ドメイン A の Cookie 値を取得パラメータとしてシステム B の b.jsp ページにリダイレクトします。
- var _frm = document.createElement("iframe");
- _frm.style.display="none";
- _frm.src = "http://bbs.it-home.org/setcookie.php ?mycookie=xxxxx";//xxx はここでエンコードするのが最適です
- document.body.appendChild(_frm);
-
コードをコピーします
2. setcookie.php ページの A システムに渡されたデータを取得します。 B システムは過去の Cookie 値を取得し、取得した値をユーザーの Cookie に書き込みます。もちろん、ドメインは独自のものであるため、Cookie へのクロスドメイン アクセスを簡単に実現できます。ただし、注意する必要がある問題があります。つまり、IE で閲覧する場合、この操作はサーバーでは成功しません。setokokie.php ページで P3P HTTP ヘッダーを設定する必要があります (詳細については、http://www.w3.org/ を参照してください)。 P3P/) P3P 設定コードは次のとおりです。
- header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');//これが ecshop の設定方法です
-
Copyコード
|