ユーザーのセッションのタイムアウトに達したときに奇妙な動作をしている codeigniter コントローラー関数からいくつかの情報を取得する codeigniter ビュー内に JavaScript 関数があります。呼び出された php 関数内に、次のようなステートメントがあります。
if (!$this->tank_auth->is_logged_in()) {
redirect(site_url('login'));}
ログインしていない場合、これによりログインページにリダイレクトされます。ただし、JavaScript関数では、応答テキストを取得し、divの内容をそれに等しく設定します。
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "mycontroller/myfunction/", false);
xmlhttp.send();
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;
ユーザーがこの関数を呼び出したときにログアウトしている場合、ログイン ページにリダイレクトする代わりに、ログイン ページの responseText を返し、それを div に挿入します。これはひどく見えます。このページを見ているときにユーザーセッションがタイムアウトした場合、どうすればこれを停止できますか? 他のアプリケーションが依存しているため、タイムアウト制限を変更できません。
実際、これは codeigniter または tank_auth の問題ではありません。単に、最初にその関数を使用して responseText の文字列を生成しているときに、ajax 要求で呼び出されている php 関数からリダイレクトする方法です。