3

ZendFrameworkWebサイトアプリセッションを集中的に作成しました。

ChromeとFirefoxでうまく機能しますが、IEでは機能しません。セッションはIEのすべてのページをリセットします。

ヘッダーを調べると、IEブラウザーが同じブラウザー内のすべてのgetまたはpostで異なるphpsessid cookieを取得しているため、セッションが機能していないことがわかります。FFとChromeでは、phpsessidcookieは問題なく保持されます。

なぜこれがIEでのみ発生するのか誰もが知っていますか?

私はbootstrap.phpにこのコードを持っています:

$generalSession  = new Zend_Session_Namespace('MyNameHere');
$generalSession ->setExpirationSeconds(1000 * 60);

次を使用してセッションを回復します。

Zend_Auth::getInstance()->getStorage()->read();

プライバシーとセキュリティのための私のIE構成は、IE9を使用して最小に設定されています。

ヘッダーにp3pcookieを配置しようとしましたが、違いはありませんでした。

私は何が欠けていますか?

4

2 に答える 2

4

私はついにIEの問題を解決しました。

問題は、開発サーバーが dev_landing.mysite.com であり、IE が名前に「_」を含むサイトからのヘッダーを拒否することでした...これは IE の設計によるものです。

ここで完全な説明を見つけました: http://odedpeer.blogspot.com.es/2009/08/why-are-my-http-cookies-rejected-by-ie.html

続けて!!

于 2012-12-27T21:51:57.970 に答える
0

ZF1でセッションが開始されることを確認するために必要なのは次のとおりです。

 //in bootstrap.php
 protected function _initsession()
    {
        Zend_Session::start();
    }

これにより、バニラPHPの場合と同じようにセッションが初期化されます。

他の場所で変更しない限り、Zend_AuthはZend_Session_Namespace('Zend_Auth');を使用します。したがって、作成した名前空間はZend_Authにアクセスできなくなります。

Zend_Session_Namespace()のインスタンスを作成すると、まだ開始されていない場合はセッションが開始されます。

エクスプローラーで新しいセッションIDを取得しない場合、boostrap.phpが実行されるたびに(すべてのリクエストで)Zend_Session_Namespace()が呼び出すかどうか疑問に思う必要があります。たぶん、ブートストラップでstartを呼び出して、必要に応じて名前空間をインスタンス化してみてください。質問に含まれていないコード/情報がセッションに影響を与えている可能性もあります。

ここではたくさんの推測が行われているので、頑張ってください。

于 2012-12-27T10:40:22.187 に答える