3

Yiiでセッションを有効にするために何か特別なことをする必要がありますか?

YiiのCCaptchaパッケージの使用に問題があります。私が抱えている最終的な問題は、前のキャプチャ文字列がページビュー間で保持されないため、キャプチャの検証が毎回失敗することです。ローカル環境ではすべて正常に動作しますが、運用サーバーでは失敗します。

私はすべてをセッションまでさかのぼりました。

Cookieをクリアすると、Cookieが設定されていることがわかり、PHPSESSIONPHPがその役割を果たしています。

しかし、このコードをページに入れると...

$session=new CHttpSession;
$session->open();
header("X-Session: " . $session['testval']. ' at ' . time());
$session['testval'] = time();

...(動作中の)開発サーバーでこの結果が得られます:

  • ページビュー1:X-Session: at 1341416149
  • ページビュー2:X-Session: 1341416149 at 1341416152
  • ページビュー3:X-Session: 1341416152 at 1341416163

しかし、本番サーバーでは次のようになります。

  • ページビュー1:X-Session: at 1341415456
  • ページビュー2:X-Session: at 1341415518
  • ページビュー3:X-Session: at 1341415530

したがって、明らかにセッションデータは保持されていません。何か案は?

4

2 に答える 2

4

私は自分の質問に答えるのは嫌いですが、私の場合、問題はCHttpSession本番サーバーの構成が正しくないことでした。どこsavePathを指しているのかわかりませんが、明示的に設定すると、/tmpページビュー間でセッションデータが保持されるのを確認できました。これは私が私ので使用することになったものです/protected/config/main.php

// application components
'components'=>array(
    'session'=>array(
        'autoStart'=>true,
        'sessionName'=>'session',
        'savePath'=>'/tmp', // this is the default, but still needs to be explicitly set
        'timeout'=>1440
    ),
    ...
于 2012-07-04T17:29:40.440 に答える
1

これは、「savePath」変数が原因ではありません...スペースなしでカスタムsessionNameを設定したためです。Yiiはデフォルトで、セッション名を「プロジェクト名」+{スペース}+「セッション」(pe「プロジェクトセッション」)として生成します。

于 2013-03-21T09:24:22.083 に答える