私はすべてのユーザーデータに対してphpセッション(セッションIDクッキーを除くクッキーではありません)を使用し、ユーザーは自分のプロファイルuser.mydomain.comに行くとすぐに "ログアウト"サブドメインを削除してください。phpセッションがサブドメインに引き継ぐことを許可します
限り、その* .mydomain.com
私はすべてのユーザーデータに対してphpセッション(セッションIDクッキーを除くクッキーではありません)を使用し、ユーザーは自分のプロファイルuser.mydomain.comに行くとすぐに "ログアウト"サブドメインを削除してください。phpセッションがサブドメインに引き継ぐことを許可します
限り、その* .mydomain.com
ある4つのオプションとして、すべてのドメインからのセッションを受け入れるする方法はあります。
置き、このあなたのphp.iniの:
session.cookie_domain = ".example.com"
またはあなたの.htaccessで:
php_value session.cookie_domain .example.com
またはあなたのスクリプトの最初の事のように:
ini_set('session.cookie_domain', '.example.com');
またはINサイトのphp-fpmプール設定:
php_value[session.cookie_domain] = .example.com
残念ながら3人すべてがうまく動作しませんでしたが、スター*が必要でしょうか? – Anthony
非常に奇妙な、私は以前にそれらの方法を使用して、彼らは正常に動作します。あなたは偶然、Suhosinをインストールしましたか?これを可能にするために変更が必要な設定があることを覚えていますか?あなたがインストールしていない場合は、あなたのインストールに関する詳細情報(例えば、apache、lighttpd、php version)を投稿できますか? – CTT
いくつかのパッケージにはSuhosinが付属しています。 'php -i |それがそこにあるかどうかを確認するためにgrep -i 'Suhosin'' –
if(isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if(!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
セキュリティは、私はとあなたが不完全か悪いかの答えのようにイライラしている場合、これはあなたの救世主である、のろわれました。それだけで動作します。
これは私のために働いたが、私はセキュリティの問題を理解していない。どのようなセキュリティ上の問題があるかも説明していただけますか? – Neo
if(isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if(!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
これは良い解決策ですが、すべての状況で使用することはできません。例として、セッションではないクッキーに頼ることができない場合は動作しません。
正しく使用すると、これは実際には機能しなくてはなりません。
ini_set('session.cookie_domain', '.example.com');
たとえばあなたがsession_start()
前にそれを置く必要があるとも私はこれはかなり古いですけどsession_start()
を呼び出して、すべてのファイルで - しかし、さらにCTTの提案@に展開する - 私は、PHPを追加する必要が次のテキストと私のサブドメインの各サブディレクトリ内の.iniファイル(つまりPHPのコードを実行し、セッションを必要とします):
suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off
私はこれが(それがこれを理解するために私の年齢を取った)ことができます願っています。
私のローカル環境でセッション共有が正常に動作していたので、これは悪く、2時間デバッグされました。 は、以前にsuhosin設定をチェックしていたはずです – weyandch
私のために働いた別のオプションは:セッションの名前を強制することです:
session_name("myWebsite");
session_start();
私はこの問題を持っていたし、それは私は2つの異なるサブドメインごとに異なるのphp.iniファイルを使用していたが判明。これらのiniファイルは異なるsession.save_path変数を指定しました。明白な理由から、これはセッションを共有する必要のあるすべてのサブドメインで同じである必要があります。
変更コア機能の上部にセッション名が最終的にサブドメインのデフォルトのセッション名を変更
session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();
PHPページに次のコードを使用し
session_name('mysession');
のようなファイルそして、ファイルサブドメインのコア機能で、デフォルトのクッキーを削除 のような:
/*default session name*/
session_name("mysession");
/*remove the PHPSESSID and default session name from subdomain's cookie*/
setcookie("mysession", "",1,"/");
setcookie("PHPSESSID", "",1,"/");
あなたはPHPSESSIDとしてあなたのクッキー名を使用し続ける場合は、ただ単にドメインとサブドメインのすべてのCookieを削除し、プロセスを繰り返し、ブラウザの既存のCookieをチェックし
"mysession" string like session_name('mysession'), setcookie("mysession", "",1,"/");
ですべての機能を削除します。
これは私の仕事でした。この質問には他に答えがありませんでした。 –
はい。 ini_set
が動作しています。それが動作するのを見るためにブラウザのすべてのキャッシュとクッキーを破壊することを忘れないでください。
xxx.example.com
とyyy.example.com
にあなたのブラウザのすべてのキャッシュとクッキーを破壊し、あなたのPHPファイルは次のように開始する必要があります。
ini_set('session.cookie_domain', '.example.com'); session_start();
まず、 'ini_set( 'session.cookie_domainにより'、 '.example.comと')'、*その後* 'のsession_start()'や 'セッション::開始()' HTTPSから:/ /github.com/delight-im/PHP-Cookie – caw