PHPでajax要求セッションが期限切れでログインを終了する問題を解決する


PHPは、1つのリクエストがAjaxリクエストか通常リクエストかを判断する
1、sessionが期限切れになった場合、urlリクエストが直接である場合、またはユーザーが開いたシステムページでキャッシュおよびクッキー情報を直接クリアした場合、phpのエントリファイルで以下のカプセル化方法を直接呼び出し、session情報の判断およびページのジャンプを行うことができる.
if(empty($_SESSION['sessionid']) || empty($_COOKIE['PHPSESSID'])){

    echo "<script>";
    echo "alert('    ,     !');";
    echo "parent.window.parent.window.location.href = '/index.php';";
    echo "</script>";

}

2、ページが保持されている場合、10分以内に何も操作されていません.ページが期限切れかどうか分かりません.操作ボタンをクリックして、例えば保存などします.ajax要求はすでに行われています.ページのhtmlを印刷して、正常にプロンプトウィンドウをポップアップできません.ログインページにジャンプします.
プロジェクトではajaxリクエストを行う操作が多く、ajaxの操作はすでに中断できず、ajaxリクエストごとにsessionが期限切れであるかどうかを判断するロジックを呼び出すことはできず、作業負担が増加します.phpのエントリコードでカプセル化されたsessionの期限切れ判定を呼び出すことを考え、echo「timeout」のような識別を返す.exit;
参照するjquery.jsライブラリで見つかりました.ajaxで呼び出されたdoneメソッドは,論理判断を補足し,ajaxリクエストSESSIONの期限切れページジャンプ問題を解決した.
if(response == "timeout"){
       alert('SESSION     ,     !');
       parent.window.parent.window.location.href = '/index.php';
       return;
}

phpパッケージのセッションが期限切れかどうかを判断する方法:
function checkSession(){

    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){          
        //is ajax
        if(empty($_SESSION['sessionid'])){
            echo "timeout";
            exit;
        }
    }
    elseif(empty($_SESSION['sessionid']) || empty($_COOKIE['PHPSESSID'])){
        echo "<script>";
        echo "alert('    ,     !');";
        echo "parent.window.parent.window.location.href = '/index.php';";
        echo "</script>";
    }

}