0

認証後のセッションで奇妙な問題が発生しました。

認証部分全体が機能し、その後に問題が発生します。

        $result = $this->getAuthService()->authenticate();

            if ($result->isValid()) {
                $storage = $this->getAuthService()->getStorage();
                $storage->write(($this->getAuthService()
                        ->getAdapter()
                        ->getResultRowObject(array(
                                'email_utilisateur',
                                'password_utilisateur',
                            ))));
                $redirect = 'success';                    
            }

現在、私はログに記録され、電子メールとパスワードが "Zend_Auth" キーに保存されています (パスワードを保存しているという事実に注意しないでください。これは例のためです ^^)。

しかし、別のページに移動すると (同じページであっても)、セッション キー "Zend_auth" が壊れてしまい、PHP オブジェクトが不完全になります。

Array
(
     [__ZF] => Array
         (
             [_REQUEST_ACCESS_TIME] => 1369667659.7526
         )

     [Zend_Auth] => __PHP_Incomplete_Class Object
        (
            [__PHP_Incomplete_Class_Name] => Zend\Stdlib\ArrayObject
        )

)

では、ページを変更するとセッション変数が台無しになる理由はありますか?

事前に感謝します。私はこの問題に5時間ほど費やし、テストなどを行いました...

編集 28/05/2013:

というわけで、まだ見つかりませんでした。とにかく、破損するオブジェクトは Zend\Stdlib\ArrayObject です。この配列オブジェクトが破損する理由は、Avec Zend\Stdlib\ArrayObject を含める前にセッションが開始されるためです。私はそれを理解しようとしますが、それが理由であれば、それはフレームワークのバグです. ちなみに私はZF2.2を使っています。

4

1 に答える 1

2

見つけた!したがって、前述のように、その理由は、ArrayObject がアプリケーションによって認識される前にセッションが開始されたためです。そして、あなたがそこに読むことができるように:

https://zf2-docs.readthedocs.org/en/latest/modules/zend.session.advanced-usage.html

**Do not enable PHP‘s session.auto_start setting. If you do not have the ability to disable this.**

そして、それが問題でした。私のphp.iniでsession.auto_startが有効になりました。これを修正するには、php.ini ファイルで 0 に設定する必要があります。

php_value session.auto_start 0

PHP が複数のアプリケーション/サイトで使用されている場合は、代わりに次の行を .htaccess に追加します。

php_value session.auto_start 0

これにより、php.ini の実際の値が上書きされます。

誰かの役に立てば幸いです^^。

于 2013-05-28T08:24:26.280 に答える