セッション変数に基づいてユーザのログインデータを組み込んだWebベースのシステムがあります。php/htmlでファイルをエクスポートするとセッションデータがリセットされる
ユーザがログインしていて、テーブルを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 ");
期限切れのヘッダーは、この形式(はいGMT)でなければなりません:期限:木曜日、1994年12月1日16:00:00 GMT – OIS