0

セッション変数に基づくユーザーログインデータを使用して構築されたWebベースのシステムがあります。

ユーザーがログインしてテーブルをcsvまたはxlsにエクスポートしようとすると、セッションデータがワイプされたように見え、ユーザーがシステムから「追い出された」場合があります。

これは、ファイルを提供するために使用しているヘッダーコードです。

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Disposition: attachment;filename=file.xls");
    header("Content-Transfer-Encoding: binary ");

それが役立つ場合は、IE6でより普及しているようです。誰かが同じような問題を抱えているのではないかと思いました。

これは私が試した最新のヘッダーです。まだ運がない。また、FF / Opera / Safariでまったく同じ手順をテストしましたが、問題ありません。

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
    header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
    header('Expires: 0', false); 
    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    header('Pragma: no-cache');
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment;filename=$fileName");
            header("Content-Transfer-Encoding: binary ");
4

1 に答える 1

3

ヘッダーはログインしているユーザーには完全に不適切であり、Pragma: public何の役にも立ちません。

また、なぜこれほど多くのContent-Typeヘッダーを使用しているのかについても少し戸惑っています。1つだけを選択してください。

最後に、これらは明示的に設定しているヘッダーです...呼び出しsession_destroysetcookieフローティングはありませんか?

于 2009-09-03T14:55:30.753 に答える