2

ユーザーとの作業に codeigniter tank auth ライブラリを使用していますが、うまく機能しています。コントローラーにアクセスしようとするたびに、関数はユーザーが次のようにログインしているかどうかを確認します。

if($this->tank_auth->is_logged_in()) {

ログに記録されている場合はモデルを読み込みますが、ログに記録されていない場合はログイン ページにリダイレクトします。このように 1 か月間動作していましたが、今はアプリケーションを拡張し、同じ手法を使用する他のコントローラーを構築していますが、ファイルは他のフォルダーにあります。以前の動作中のアプリケーションは引き続き正常に動作しますが、このアプリでは新しいフォルダーから (基本的にはそのアプリケーションの新しいモジュールであり、同じログイン ページを使用しますが、モジュールのユーザー選択に応じてリダイレクトが異なります)、正しくログインできます。コントローラーへのリクエストは問題ありませんが、ある時点で、ユーザーがログインしていないことがわかります。セッションの期限切れなどではありません。今、1 つのリクエストを作成し、セッションを延長し、次のリクエストを 3 秒で延長しているようです。間隔はユーザーをログアウトさせます...私は' 新しいコントローラーで何も変わったことはありませんが、しばらくすると、5 分かかることもあれば、15 分かかることもあり、ログアウトします...理由がわかりません。私はセッションを他に使用しません...

これが何であるか知っている人はいますか?または何か提案はありますか?リクエストがあれば、詳細をお知らせします。

どうもありがとうございました。

編集: 新しいモジュールは、同じ Codeigniter インストール内のより多くのコントローラーで構成され、同じ CI 構成、同じタンク認証ライブラリで動作し、関数は次のようにメインの要求コントローラーにコピーされます。

class Requests extends Controller
{
    function __construct()

    {
        parent::__construct();

        $this->load->helper(array('form', 'url'));
        $this->load->helper('date');
        $this->load->library('form_validation');
        $this->load->library('tank_auth');
    }

..............
more functions
..............

    function getServices() { /// One of the functions that the new module uses
            if (!$this->tank_auth->is_logged_in()) {
                return;
            } else {
                $this->load->model('requests/getServices');
                $data['tid'] = $_POST['tid'];
                $this->getServices->showData($data);
            }

        }
4

2 に答える 2

2

Cookie が消えるまでの遅延は、$config['time_to_update'] (デフォルトは 300 秒) と関係があると思われます。

セッション変数が変更されていない場合、Cookie は 5 分ごとにのみ更新 (再設定) されます。したがって、アプリケーションの新しい部分の観点からは Cookie が無効になる可能性がありますが、Session クラスは 300 秒が経過するまでそれを認識せず、その時点で Cookie はクリアされ、ユーザーはログアウトされます。 .

新しいコードの場所について詳しく教えてください。それは同じ CodeIgniter インストールにありますか? 等

于 2010-12-03T22:06:27.733 に答える
0

別のアプリで使用していた画像アップロード機能でセッションをいじっていました。これらのセッション行を消去しましたが、正常に機能するようになりました。セッションコードは、誰かが疑問に思っている場合に備えて、PHPネイティブの$_SESSIONコードでした。

ありがとう。

于 2010-12-09T00:39:41.573 に答える