1

セッションの有効期限の更新に問題があります。

私はこれをします:

trought -> $.ajax ({url: "/index.php/main/refresh_session"});

機能する:

function refresh_session() {
   $this->session->sess_destroy();

   $data = array('is_logged_in' => true);
   $this->session->set_userdata($data);
}

私の目的はセッションタイムアウトを更新することですが、このコードは機能せず、セッションは60秒後に期限切れになります。(config:$ config ['sess_expiration'] = 60;)

たぶん誰かが同様の問題に遭遇しましたか?

4

5 に答える 5

2

呼び出しに固執している場合は、セッション データを再度設定する前に$this->session->sess_destroy();呼び出す必要があります。そうしないと、設定されません。$this->session->sess_create();

編集:これは、データベースを使用してセッションを保存している場合です。そうしないと、手動で呼び出すことなくセッションを再作成できますsess_create()

于 2012-08-21T14:10:48.853 に答える
1

現在「開発」ブランチにあるものを含むCodeIgniterの最新バージョンについては、別の回答ですでに述べられているように、session->set_userdata後で呼び出すことはできません。session->sess_destroyこれは、(現在を直接必要とするset_userdata呼び出し)sess_destroy()によって間接的に必要とされる現在のsession_idを含む内部userdata配列をクリアするためです。set_userdatasess_writesession_id

警告を有効にしている場合は、この要件が表示されます。

于 2012-08-21T17:26:34.103 に答える
0

$config['sess_time_to_update']より低く設定して$config['sess_expiration']ください。

と削除し$this->session->sess_destroy()ます。この関数は最後に呼び出す必要があり、フラッシュ変数も使用できなくなります。すべてではなく一部のアイテムのみを破壊したい場合は、 を使用しますunset_userdata()

于 2012-08-21T13:30:05.793 に答える
0
trought -> $.ajax ({url: "/index.php/main/refresh_session"});

function refresh_session() {
   $data = array('is_logged_in' => true);
   $this->session->set_userdata($data);
}
  1. セッションの有効期限はまったく行われません:

    $config['sess_expiration'] = 60;
    $config['sess_time_to_update'] = 59;
    
  2. セッションは 60 秒後に期限切れになります。セッションの有効期限が更新されません:

    $config['sess_expiration'] = 60;
    $config['sess_time_to_update'] = 5;
    $config['sess_time_to_update'] = ?
    
于 2012-08-23T09:04:24.160 に答える
0

私は同じ問題を抱えていました.何時間もイライラしてすべてを調べた後、インデックスページに空白があることがわかりました. スペースを削除して解決しました。

于 2017-05-11T11:10:58.137 に答える