2009-09-03 11 views
0

セッション変数に基づいてユーザのログインデータを組み込んだ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 "); 
+0

期限切れのヘッダーは、この形式(はいGMT)でなければなりません:期限:木曜日、1994年12月1日16:00:00 GMT – OIS

答えて

3

Pragma: publicヘッダは、ログインしたユーザーのための完全に不適切であると何かを支援するつもりはありません。

私はなぜあなたが非常に多くのContent-Typeヘッダーを使用しているのかちょっと困惑しています。 1つだけを選択してください。

最後に、あなたが明示的に設定しているヘッダーです... session_destroyまたはsetcookieの呼び出しはありませんか?

+0

応答のためにありがとうございました、セッションを破棄する呼び出しはありません。ショットを提案し、それがどうなるかを見てください。 – Shane

+0

公開されているページをログインしているユーザーに提供することに問題がある場合は、この他のスレッドで回答をチェックアウトすることができます。http://stackoverflow.com/questions/49547/making-sure-a-webpage-全ブラウザにキャッシュされているわけではありません – searlea

+0

うん、それは間違いなく動作しません。ほとんどのヘッダーを削除しても、session_destoryまたはsetcookieを呼び出す必要はありません。このような問題を引き起こすためにシステムが行うことができる他の呼び出しはありますか?私がie6を開いたら、ログインしてXlsにエクスポートを押すと、私は追い出されます。私は再度ログインしてXlsへのエクスポートを押すと、ファイルは完全に正常に処理されます。 – Shane

関連する問題