1

codeigniterでは、セッションの有効期限が切れた後でもフォームを送信できるようです。

例:フォームに記入しようとして、コンピューターから少し離れました。戻ったとき、フォームを正常に送信し、データベースを確認したとき、userIDは0でした。そのため、ページを更新すると、ログインページにリダイレクトされました。セッションの有効期限が切れていても、フォームを送信できました。それが起こるべきではないようです。

それを処理する関数を設定しましたが、セッションの有効期限が切れた後にフォームを送信できる理由、またはこれが何か問題を示しているのかどうかを理解したいと思います。

function sess_valid() {
       $sess_timeout = now() - 3600; //3600 is the session expiry time
       $last_act = $this->session->userdata('last_activity');

       if($last_act <= $sess_timeout)
       {
        redirect('login');
       }
    }
4

2 に答える 2

1

フォームはいつでも送信できます。フォームにはセッションはまったく必要ありません。フォームは HTML ドキュメントのセクションであり、有効な HTML のみを必要とします。言い換えれば、フォームはすべて問題ありません。

フォームが送信されると、データが送信されます。ここで、サーバー側の言語を使用する必要があります - フォーム データを検証します。
あなたの場合、すでに気づいたように、セッションが生きているかどうかを確認することが正しい方向です。チェックの結果に応じて、フォームデータをどこかに保存し、ユーザーがログインした後にフォームフィールドを再入力すると同時に、ログインにリダイレクトできます。

于 2012-10-29T19:46:41.967 に答える
1

私の推測では、セッション チェックを手動で処理する必要があります。フォーム検証実行のレベルで、これを行うことができます。例えば:

if ($this->form_validation->run() == FALSE || !sess_valid())
于 2012-10-29T19:46:42.027 に答える